new file: dependence.py

new file:   package.py
new file:   packup.bat
new file:   packup.sh
new file:   requirements.txt
new file:   scripts/__init__.py
new file:   scripts/file_store_api.py
new file:   src/__init__.py
new file:   src/config.toml
new file:   src/modules/__init__.py
new file:   src/modules/plugin_modules.py
new file:   src/modules/user_module.py
new file:   src/process.py
new file:   test.py
This commit is contained in:
JianFeeeee
2025-08-14 16:01:37 +08:00
parent 16c694e1ec
commit 85ca0e7589
14 changed files with 559 additions and 0 deletions

63
src/process.py Normal file
View File

@ -0,0 +1,63 @@
import threading
from src.modules.plugin_modules import BasePlugin, MessageContext
from openai import OpenAI
import time
class SiloconFlowAPI:
def __init__(self, api_key,modules,base_url):
self.client = OpenAI(api_key=api_key, base_url=base_url)
self.api_key = api_key
self.module = modules
def get_ai_message(self, message,i=0):
try:
response = self.client.chat.completions.create(
model=self.module[i],
messages=message,
temperature=0.7,
max_tokens=4096
)
print("token usage {0}".format(response.usage.total_tokens))
return response.choices[0].message.content
except:
if i<len(self.module)-1:
i+=1
self.get_ai_message(message,i)
else:
print("server busy,waiting")
time.sleep(10)
i = 0
self.get_ai_message(message,i)
class Ai_reply(BasePlugin):
def after_save(self):
config = self.config.get("siloconflow")
ai_server = SiloconFlowAPI(base_url= config.get("base_url"), api_key= config.get("api_key"), modules= config.get("modules"))
if self.ctx.group is None:
self.ctx.user.messages.append({'role': 'user',
'content': f"当前用户为:{self.ctx.user.nickname},其uid为:{self.ctx.user.user_id},以上为背景信息,根据背景信息回复用户消息。用户消息:{self.ctx.raw_message}"})
message = ai_server.get_ai_message(self.ctx.user.messages)
typing_thread = threading.Thread(target=self.ctx.user.set_input_status, args=(1,))
typing_thread.start()
#获取ai返回值
message = ai_server.get_ai_message(self.ctx.user.messages)
#结束刷新状态
self.ctx.user.signal = False
#回收线程
typing_thread.join()
#指示器归零
self.ctx.user.signal = True
#发送消息
self.ctx.user.send_message(message)
else:
if "CQ:at,qq={0}".format(self.ctx.rebot_id) in self.ctx.raw_message:
self.ctx.group.messages.append({'role': 'user',
'content':
f"群聊名称为:{self.ctx.group.nickname},用户在群中的近十条消息为:{self.ctx.group.current_user.messages},用户名叫:{self.ctx.group.current_user.nickname},以上为背景信息,根据背景信息回复消息。消息为:{self.ctx.raw_message}"})
message = ai_server.get_ai_message(self.ctx.group.messages)
self.ctx.group.send_message(message)
return "ok"