花骨朵轻创
花骨朵轻创
Published on 2025-03-02 / 32 Visits

API接口配置

一. 知识库文档检索接入:项目根目录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}。请严格按照知识库进行精简回复。请勿自己总结,答是什么,就原封不动的回复给我。 根据自己的实际使用场景进行修改!


Comment