add: 添加ollama调用AI chat逻辑
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import re
|
||||
|
||||
from typing import Type
|
||||
from maubot.handlers import event
|
||||
from maubot.handlers import command, event
|
||||
from maubot import Plugin, MessageEvent
|
||||
from mautrix.types import Format, TextMessageEventContent, EventType, MessageType, RelationType
|
||||
from mautrix.util import markdown
|
||||
@@ -15,6 +15,7 @@ from maubot_llmplus.thrid_platform import OpenAi, Anthropic
|
||||
配置文件加载
|
||||
"""
|
||||
|
||||
|
||||
class Config(BaseProxyConfig):
|
||||
def do_update(self, helper: ConfigUpdateHelper) -> None:
|
||||
helper.copy("allowed_users")
|
||||
@@ -28,7 +29,6 @@ class Config(BaseProxyConfig):
|
||||
|
||||
|
||||
class AiBotPlugin(Plugin):
|
||||
|
||||
name: str
|
||||
|
||||
async def start(self) -> None:
|
||||
@@ -105,19 +105,18 @@ class AiBotPlugin(Plugin):
|
||||
if parent_event.sender == self.client.mxid:
|
||||
return True
|
||||
|
||||
|
||||
@event.on(EventType.ROOM_MESSAGE)
|
||||
async def on_message(self, event: MessageEvent) -> None:
|
||||
if not await self.should_respond(event):
|
||||
return
|
||||
|
||||
try:
|
||||
self.log.debug("开始发送消息")
|
||||
await event.mark_read()
|
||||
await self.client.set_typing(event.room_id, timeout=99999)
|
||||
platform = self.get_ai_platform()
|
||||
chat_completion = await platform.create_chat_completion(self, event)
|
||||
self.log.debug(f"发送结果 {chat_completion.message}, {chat_completion.model}, {chat_completion.finish_reason}")
|
||||
self.log.debug(
|
||||
f"发送结果 {chat_completion.message}, {chat_completion.model}, {chat_completion.finish_reason}")
|
||||
# ai gpt调用
|
||||
# 关闭typing提示
|
||||
await self.client.set_typing(event.room_id, timeout=0)
|
||||
@@ -126,7 +125,6 @@ class AiBotPlugin(Plugin):
|
||||
response = TextMessageEventContent(msgtype=MessageType.TEXT, body=resp_content, format=Format.HTML,
|
||||
formatted_body=markdown.render(resp_content))
|
||||
await event.respond(response, in_thread=self.config['reply_in_thread'])
|
||||
self.log.debug("发送结束")
|
||||
except Exception as e:
|
||||
self.log.exception(f"Something went wrong: {e}")
|
||||
await event.respond(f"Something went wrong: {e}")
|
||||
|
||||
@@ -25,9 +25,6 @@ class Ollama(Platform):
|
||||
endpoint = f"{self.url}/api/chat"
|
||||
req_body = {'model': self.model, 'messages': full_context, 'stream': False}
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
if self.api_key is not None:
|
||||
headers['Authorization'] = self.api_key
|
||||
plugin.log.debug(f"{json.dumps(req_body)}")
|
||||
async with self.http.post(endpoint, headers=headers, json=req_body) as response:
|
||||
# plugin.log.debug(f"响应内容:{response.status}, {await response.json()}")
|
||||
if response.status != 200:
|
||||
@@ -36,8 +33,6 @@ class Ollama(Platform):
|
||||
finish_reason=f"http status {response.status}",
|
||||
model=None
|
||||
)
|
||||
text = await response.text()
|
||||
plugin.log.debug(f"解析后的响应内容: {text}")
|
||||
response_json = await response.json()
|
||||
return ChatCompletion(
|
||||
message=response_json['message'],
|
||||
|
||||
Reference in New Issue
Block a user