一. 知识库文档检索接入:项目根目录wxfly > knowledge_doc_api.py
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
# 打开知识文档,并读取内容!
with open(f'document/knowledge_doc.txt', mode='r', encoding='utf-8') as f:
knowledge_doc = f.read()
def knowl_kimi_api(text):
client = OpenAI(
api_key=f"{os.getenv('KIMI_API_KEY') or 'sk-k0NFHN6Q4NNobBbfQmmC1pDPbC8wRvcVrxIMUbXrsiTh3iQg'}",
base_url="https://api.moonshot.cn/v1",
)
completion = client.chat.completions.create(
model="moonshot-v1-8k",
messages=[
{
"role": "system",
"content": f"你是一个专业的接待客服,请你根据{knowledge_doc}文案的内容,回答用户的提问,文案中Q是客户提的问题,A是客服做出的回答,这个只是参考案例,但回复的时候,要基于这个答案进行回复。不能自己胡编乱造,请你根据用户的提问进行回答,简洁明了,如果客户的问题,在文案中找不到对应的答案,就直接回复:您的问题,需要咨询我们人工客服电话:{os.getenv('PHONE_NUMBERS')}。请勿给出答案以外的总结等其他信息。在回复中不要出现A或者:这个字符"},
{"role": "user", "content": f"{text}"}
],
temperature=0.3,
)
return completion.choices[0].message.content
提示词:你是一个专业的接待客服,请你根据{knowledge_doc}文案的内容,回答用户的提问,文案中Q是客户提的问题,A是客服做出的回答,这个只是参考案例,但回复的时候,要基于这个答案进行回复。不能自己胡编乱造,请你根据用户的提问进行回答,简洁明了,如果客户的问题,在文案中找不到对应的答案,就直接回复:您的问题,需要咨询我们人工客服电话:{os.getenv('PHONE_NUMBERS')}。请勿给出答案以外的总结等其他信息。在回复中不要出现A或者:这个字符!这里根据自己的实际业务场景修改。
二. Dify知识库接入:项目根目录wxfly > API >difyapi.py(前置工作需要Dify在本地部署和工作流搭建完善!)
import requests
import json
def dif_answer(content):
headers = {
'Authorization': 'Bearer app-ByMpb6X8JrWYxX56tMYDLGMP',
'Content-Type': 'application/json',
}
json_data = {
'inputs': {
'text': content # 将集合改为字符串或字典
},
'response_mode': 'blocking',
'user': 'abc-123',
# 'prompt': '你是一个专业翻译机器人,只要翻译成英文即可,无需总结和废话,只要告诉我结果。就可以了。', # 添加前置提示词
}
response = requests.post('https://api.dify.ai/v1/workflows/run', headers=headers, json=json_data).text
# 打印响应状态码和内容
result = json.loads(response)['data']['outputs']['text']
return result
# print(dif_answer('公司倒了怎么办?'))
提示词:你是一个专业翻译机器人,只要翻译成英文即可,无需总结和废话,只要告诉我结果。就可以了!根据自己的知识库以及实际使用场景进行修改!
三. Deepseek大模型接入:项目根目录wxfly > API >deepseekapi.py
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
def deepseek_api(user):
client = OpenAI(api_key=f"{os.getenv('DEEPSEEK_API_KEY')}", base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": f"{user}"},
],
stream=False
)
return response.choices[0].message.content
提示词:You are a helpful assistant !根据自己实际使用场景进行修改!
四. kimi大模型接入:项目根目录wxfly > API >kimiapi.py
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
def kimiapi(text):
client = OpenAI(
api_key=f"{os.getenv('KIMI_API_KEY') or 'sk-k0NFHN6Q4NNobBbfQmmC1pDPbC8wRvcVrxIMUbXrsiTh3iQg'}",
base_url="https://api.moonshot.cn/v1",
)
completion = client.chat.completions.create(
model="moonshot-v1-8k",
messages=[
{"role": "system",
"content": "你是人工智能助手,你擅长各种类型对话和聊天,在回复的时候。请控制回复字数,控制在10-20个汉字左右,"},
{"role": "user", "content": f"{text}"}
],
temperature=0.3,
)
return completion.choices[0].message.content
提示词:你是人工智能助手,你擅长各种类型对话和聊天,在回复的时候。请控制回复字数,控制在10-20个汉字左右,根据自己实际使用场景进行修改!
五. 微软graphrag知识图谱接入:项目根目录wxfly > API >graphragapi.py(前置工作需要先部署好graphrag项目和构建好知识索引,以及开启api接口服务)
import requests
import json
def graphrag_answer(question):
url = "http://182.92.155.55:8012/v1/chat/completions"
headers = {
"Content-Type":"application/json"
}
data = {
"model":"graphrag-local-search:latest",
"messages": [
{
"role": "user",
"content": f"问:{question}。请严格按照知识库进行精简回复。请勿自己总结,答是什么,就原封不动的回复给我。"
}
],
"temperature": 0.7,
"max_tokens": 1000
}
response = requests.post(url, headers=headers, data=json.dumps(data)).json()
response_content = response["choices"][0]["message"]["content"]
return response_content
提示词:问:{question}。请严格按照知识库进行精简回复。请勿自己总结,答是什么,就原封不动的回复给我。 根据自己的实际使用场景进行修改!