Skip to content

Commit

Permalink
Merge pull request #379 from LlmKira/dev
Browse files Browse the repository at this point in the history
Fix Redis
  • Loading branch information
sudoskys authored Apr 17, 2024
2 parents 6c05fec + 2fccf42 commit c1b621d
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 21 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<a href="https://hub.docker.com/repository/docker/sudoskys/llmbot/general">
<img src="https://img.shields.io/docker/pulls/sudoskys/llmbot" alt="docker">
</a>
<a href="https://github.com/llmkira/openaibot/actions/workflows/docker-ci.yaml">
<img src="https://github.com/llmkira/openaibot/actions/workflows/docker-ci.yaml/badge.svg" alt="docker workflow">
<a href="https://badge.fury.io/py/llmkira">
<img src="https://badge.fury.io/py/llmkira.svg" alt="docker workflow">
</a>
<br />
<a href="https://t.me/Openai_LLM">
Expand Down
2 changes: 1 addition & 1 deletion app/middleware/llm_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ async def build_message(self, remember=True):
if isinstance(system_prompt, str):
message_run.append(SystemMessage(content=system_prompt))
history = await self.message_history.read(lines=10)
history = reversed(history)
logger.trace(f"History message {history}")
for de_active_message in history:
try:
msg = active_cell_string(de_active_message)
Expand Down
7 changes: 7 additions & 0 deletions llmkira/doc_manager/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,18 @@ def mongodb_validator(self):
self.mongodb_dsn, serverSelectionTimeoutMS=1000
) # 设置超时时间
client.admin.command("ping")
# 获取服务器信息
client.server_info()
# 尝试执行需要管理员权限的命令
client.admin.command("listDatabases")
except ServerSelectionTimeoutError:
self.available = False
logger.warning(
f"\n🍀MongoDB Connection Error -- timeout when connecting to {self.mongodb_dsn}"
)
except pymongo.errors.OperationFailure:
self.available = False
logger.warning("\n🍀MongoDB Connection Error -- insufficient permissions")
except Exception as e:
self.available = False
logger.warning(f"\n🍀MongoDB Connection Error -- error {e}")
Expand Down
8 changes: 4 additions & 4 deletions llmkira/memory/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ async def read(self, lines: int) -> List[str]:
...

@abstractmethod
async def append(self, message: List[BaseModel]):
_json_lines = [m.model_dump_json(indent=None) for m in message]
async def append(self, messages: List[BaseModel]):
_json_lines = [m.model_dump_json(indent=None) for m in messages]
...

@abstractmethod
async def write(self, message: List[BaseModel]):
_json_lines = [m.model_dump_json(indent=None) for m in message]
async def write(self, messages: List[BaseModel]):
_json_lines = [m.model_dump_json(indent=None) for m in messages]
...

@abstractmethod
Expand Down
6 changes: 4 additions & 2 deletions llmkira/memory/local_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,15 @@ async def read(self, lines: int) -> List[str]:
if i >= lines:
break
result.append(line)
# 逆序
result = result[::-1]
return result

async def write(self, message: List[BaseModel]):
async def write(self, messages: List[BaseModel]):
async with self.lock:
async with AIOFile(str(self.path), "w") as afp:
writer = Writer(afp)
for m in message:
for m in messages:
_json_line = m.model_dump_json(indent=None)
await writer(_json_line + "\n")
await afp.fsync()
Expand Down
17 changes: 8 additions & 9 deletions llmkira/memory/redis_storage/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
# Source: https://github.com/langchain-ai/langchain/blob/master/libs/langchain/langchain/utilities/redis.py
from __future__ import annotations

import json
from typing import List

import redis
Expand Down Expand Up @@ -64,19 +63,19 @@ def key(self) -> str:

async def read(self, lines: int) -> List[str]:
_items = self.redis_client.lrange(self.key, 0, lines - 1)
items = [json.loads(m.decode("utf-8")) for m in _items[::-1]]
items = [m.decode("utf-8") for m in _items[::-1]]
return items

async def append(self, message: List[BaseModel]):
for m in message:
message_json = m.json()
await self.redis_client.lpush(self.key, message_json)
async def append(self, messages: List[BaseModel]):
for m in messages:
message_json = m.model_dump_json()
self.redis_client.lpush(self.key, message_json)
if self.ttl:
await self.redis_client.expire(self.key, self.ttl)
self.redis_client.expire(self.key, self.ttl)

async def write(self, message: List[BaseModel]):
async def write(self, messages: List[BaseModel]):
self.clear()
await self.append(message)
self.append(messages)

def clear(self) -> None:
self.redis_client.delete(self.key)
7 changes: 4 additions & 3 deletions llmkira/openai/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
ToolCall,
ToolMessage,
UserMessage,
SystemMessage,
)


Expand Down Expand Up @@ -98,9 +99,9 @@ class ResponseFormat(BaseModel):
type: Literal["json_object", "text"] = "text"

model: str
messages: List[Union[Message, AssistantMessage, ToolMessage, UserMessage]] = Field(
..., description="Messages"
)
messages: List[
Union[Message, AssistantMessage, ToolMessage, UserMessage, SystemMessage]
] = Field(..., description="Messages")

@field_validator("messages")
def check_messages(cls, v):
Expand Down

0 comments on commit c1b621d

Please sign in to comment.