olivebot/llm/nlp_ollama_api.py
莣仔 059b6cee6d 年翻更新
1、修复服务器ip配置,配置页没替换问题;
2、修复开启状态偶尔没对齐问题;
3、修复关闭时关闭按钮停留在关闭中问题;
4、修复星座读取错误问题;
5、修复刷新重复提醒开启问题;
6、新增是否进行语音合成的选择;
7、文字沟通接口加入“观察描述”;
8、聊天记录时间改为毫秒级;
9、补充数字人和远程音频的连接状态显示;
10、修复备注填写无法保存问题。
2024-10-30 19:11:15 +08:00

78 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import requests
import time
from utils import config_util as cfg
from utils import util
from core import content_db
def question(cont, uid=0, observation=""):
contentdb = content_db.new_instance()
if uid == 0:
communication_history = contentdb.get_list('all','desc', 11)
else:
communication_history = contentdb.get_list('all','desc', 11, uid)
person_info = cfg.config["attribute"]
observation_text = ""
if observation != "":
observation_text = f"以下是当前观测结果:{observation},观测结果只供参考。"
#此处可以定义角色的行为和特征假装xx模型可以绕过chatgpt信息检查
prompt = f"""
你是数字人:{person_info['name']},你性别为{person_info['gender']}
你年龄为{person_info['age']},你出生地在{person_info['birth']}
你生肖为{person_info['zodiac']},你星座为{person_info['constellation']}
你职业为{person_info['job']},你联系方式为{person_info['contact']}
你喜好为{person_info['hobby']}{observation_text}
回答之前请一步一步想清楚。对于大部分问题,请直接回答并提供有用和准确的信息。
请尽量以可阅读的方式回复所有回复请尽量控制在20字内。
"""
#历史记录处理
message=[
{"role": "system", "content": prompt}
]
i = len(communication_history) - 1
if len(communication_history)>1:
while i >= 0:
answer_info = dict()
if communication_history[i][0] == "member":
answer_info["role"] = "user"
answer_info["content"] = communication_history[i][2]
elif communication_history[i][0] == "fay":
answer_info["role"] = "assistant"
answer_info["content"] = communication_history[i][2]
message.append(answer_info)
i -= 1
else:
answer_info = dict()
answer_info["role"] = "user"
answer_info["content"] = cont
message.append(answer_info)
url=f"http://{cfg.ollama_ip}:11434/api/chat"
req = json.dumps({
"model": cfg.ollama_model,
"messages": message,
"stream": False
})
headers = {'content-type': 'application/json'}
session = requests.Session()
starttime = time.time()
try:
response = session.post(url, data=req, headers=headers)
response.raise_for_status() # 检查响应状态码是否为200
result = json.loads(response.text)
response_text = result["message"]["content"]
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
response_text = "抱歉,我现在太忙了,休息一会,请稍后再试。"
util.log(1, "接口调用耗时 :" + str(time.time() - starttime))
return response_text.strip()
if __name__ == "__main__":
for i in range(3):
query = "爱情是什么"
response = question(query)
print("\n The result is ", response)