feat: 为单次流式聊天接口增加记忆功能
This commit is contained in:
1 parent
0593bf0482
commit
872cde91e8
3 files changed
+92
-11
No files matched your search
@@ -0,0 +1,61 @@
|
||||
import aiohttp
|
||||
import json
|
||||
from datetime import datetime
|
||||
from config import get_config
|
||||
|
||||
|
||||
# 依赖注入获取Config
|
||||
Config = get_config()
|
||||
|
||||
class Summarizer:
|
||||
def __init__(self):
|
||||
self.system_prompt = """你是一台对话总结机器,你的职责是整理用户与玩具之间的对话,最终提炼出对话中发生的事件,以及用户性格\n\n你的输出必须为一个json,里面有两个字段,一个是event,一个是character,将你总结出的事件写入event,将你总结出的用户性格写入character\nevent和character均为字符串\n返回示例:{"event":"在幼儿园看葫芦娃,老鹰抓小鸡","character":"活泼可爱"}"""
|
||||
self.model = "abab5.5-chat"
|
||||
self.max_token = 10000
|
||||
self.temperature = 0.9
|
||||
self.top_p = 1
|
||||
|
||||
async def summarize(self,messages):
|
||||
context = ""
|
||||
for message in messages:
|
||||
if message['role'] == 'user':
|
||||
context += "用户:"+ message['content'] + '\n'
|
||||
elif message['role'] == 'assistant':
|
||||
context += '玩具:'+ message['content'] + '\n'
|
||||
payload = json.dumps({
|
||||
"model":self.model,
|
||||
"messages":[
|
||||
{
|
||||
"role":"system",
|
||||
"content":self.system_prompt
|
||||
},
|
||||
{
|
||||
"role":"user",
|
||||
"content":context
|
||||
}
|
||||
],
|
||||
"max_tokens":self.max_token,
|
||||
"top_p":self.top_p
|
||||
})
|
||||
headers = {
|
||||
'Authorization': f'Bearer {Config.MINIMAX_LLM.API_KEY}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(Config.MINIMAX_LLM.URL, data=payload, headers=headers) as response:
|
||||
content = json.loads(json.loads(await response.text())['choices'][0]['message']['content'])
|
||||
try:
|
||||
summary = {
|
||||
'event':datetime.now().strftime("%Y-%m-%d")+":"+content['event'],
|
||||
'character':content['character']
|
||||
}
|
||||
except TypeError:
|
||||
summary = {
|
||||
'event':datetime.now().strftime("%Y-%m-%d")+":"+content['event'][0],
|
||||
'character':""
|
||||
}
|
||||
return summary
|
||||
|
||||
def get_summarizer():
|
||||
summarizer = Summarizer()
|
||||
return summarizer
|
||||
Reference in new issue
Block a user