| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import json
- from openai import OpenAI
- from service.search_service import query_data
- def generate_summary_prompt(query, search_results):
- """
- 生成总结的prompt。
- :param query: 问题
- :param search_results: 搜索结果列表,每个元素包含 'content', 'contentSummary', 'score'
- :return: 生成的总结prompt
- """
- # 为了让AI更好地理解,我们将使用以下格式构建prompt:
- prompt = f"问题: {query}\n\n请结合以下搜索结果,生成一个总结:\n"
- # 先生成基于相似度加权的summary
- weighted_summaries = []
- weighted_contents = []
- for result in search_results:
- content = result['content']
- content_summary = result['contentSummary']
- score = result['score']
- # 加权内容摘要和内容
- weighted_summaries.append((content_summary, score))
- weighted_contents.append((content, score))
- # 为了生成更准确的总结,基于相似度加权内容和摘要
- weighted_summaries.sort(key=lambda x: x[1], reverse=True) # 按相似度降序排列
- weighted_contents.sort(key=lambda x: x[1], reverse=True) # 按相似度降序排列
- # 将加权的摘要和内容加入到prompt中
- prompt += "\n-- 加权内容摘要 --\n"
- for summary, score in weighted_summaries:
- prompt += f"摘要: {summary} | 相似度: {score:.2f}\n"
- prompt += "\n-- 加权内容 --\n"
- for content, score in weighted_contents:
- prompt += f"内容: {content} | 相似度: {score:.2f}\n"
- # 最后请求AI进行总结
- prompt += "\n基于上述内容,请帮我生成一个简洁的总结。"
- return prompt
- def generate_summary_query(query, search_results):
- prompt = generate_summary_prompt(query, search_results)
- return chat_with_deepseek(prompt)
- def chat_with_deepseek(prompt, model="deepseek-chat", max_tokens=8192, temperature=0.7):
- """
- 使用OpenAI兼容方式调用DeepSeek API
- 参数:
- prompt (str): 用户输入的提示文本
- model (str): 使用的模型,默认为deepseek-chat
- max_tokens (int): 生成的最大token数
- temperature (float): 控制生成随机性的参数(0-1)
- 返回:
- str: API的回复内容
- """
- # 初始化客户端,指定DeepSeek的API端点
- client = OpenAI(
- api_key='sk-cfd2df92c8864ab999d66a615ee812c5',
- base_url="https://api.deepseek.com/v1", # DeepSeek的API端点
- )
- try:
- # 创建聊天完成请求
- response = client.chat.completions.create(
- model=model,
- messages=[{"role": "user", "content": prompt}],
- max_tokens=max_tokens,
- temperature=temperature,
- stream=False
- )
- # 返回回复内容
- return response.choices[0].message.content
- except Exception as e:
- return f"发生异常: {str(e)}"
- if __name__ == '__main__':
- query = '帮我查询一些AI工具'
- search_results = query_data(query, [1,2])
- print(generate_summary_query(query, search_results))
|