add: 添加ollama调用AI chat逻辑

This commit is contained in:
taylor
2024-10-13 16:56:21 +08:00
parent f837163ca1
commit bab547198f
2 changed files with 5 additions and 7 deletions

View File

@@ -29,15 +29,13 @@ class Config(BaseProxyConfig):
class AiBotPlugin(Plugin): class AiBotPlugin(Plugin):
# name of the bot
name: str
async def start(self) -> None: async def start(self) -> None:
await super().start() await super().start()
# 加载并更新配置 # 加载并更新配置
self.config.load_and_update() self.config.load_and_update()
# 决定当前机器人的名称 # 决定当前机器人的名称
self.name = self.config['name'] or \ super.name = self.config['name'] or \
await self.client.get_displayname(self.client.mxid) or \ await self.client.get_displayname(self.client.mxid) or \
self.client.parse_user_id(self.client.mxid)[0] self.client.parse_user_id(self.client.mxid)[0]

View File

@@ -57,7 +57,7 @@ class Platform:
async def get_context(plugin: Plugin, evt: MessageEvent) -> deque: async def get_context(plugin: Plugin, platform: Platform, evt: MessageEvent) -> deque:
# 创建系统提示词上下文 # 创建系统提示词上下文
system_context = deque() system_context = deque()
# 生成当前时间 # 生成当前时间
@@ -81,9 +81,9 @@ async def get_context(plugin: Plugin, evt: MessageEvent) -> deque:
for item in additional_context: for item in additional_context:
system_context.append(item) system_context.append(item)
# 如果 消息长度已经超过了配置的消息条数,那么就抛出错误 # 如果 消息长度已经超过了配置的消息条数,那么就抛出错误
if len(additional_context) > plugin.config['max_context_messages'] - 1: if len(additional_context) > platform.max_context_messages - 1:
raise ValueError(f"sorry, my configuration has too many additional prompts " raise ValueError(f"sorry, my configuration has too many additional prompts "
f"({plugin.config['max_context_messages']}) and i'll never see your message. " f"({platform.max_context_messages}) and i'll never see your message. "
f"Update my config to have fewer messages and i'll be able to answer your questions!") f"Update my config to have fewer messages and i'll be able to answer your questions!")
# 用户历史聊天上下文 # 用户历史聊天上下文
@@ -111,7 +111,7 @@ async def get_context(plugin: Plugin, evt: MessageEvent) -> deque:
# 计算单词量和消息数 # 计算单词量和消息数
word_count += len(message.split()) word_count += len(message.split())
message_count += 1 message_count += 1
if word_count >= plugin.config['max_words'] or message_count >= plugin.config['max_context_messages']: if word_count >= platform.max_words or message_count >= platform.max_context_messages:
break break
chat_context.appendleft({"role": role, "content": user + message}) chat_context.appendleft({"role": role, "content": user + message})