python+openai+tavily实现ai分步骤深度研究deepresearch前后端代码
代码语言:python
所属分类:人工智能
代码描述:python+openai+tavily实现ai分步骤深度研究deepresearch前后端代码,这里使用了兼容openai的qwen系统api与模型,改成兼容openai的其他模型即可。
代码标签: python openai tavily ai 分步骤 深度 研究 deep research 前
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* import asyncio import os import json # 移除 playwright 导入: from playwright.async_api import async_playwright, Page import requests # 添加 requests 导入 from openai import AsyncOpenAI from dotenv import load_dotenv import re # 用于清理文本 import uuid # 用于生成唯一目录名 import datetime # 用于时间戳 # 加载环境变量 load_dotenv() # 从环境变量获取API Key API_KEY = "sk-"#os.getenv("OPENAI_API_KEY") BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"#os.getenv("OPENAI_BASE_URL") # 新增:获取 Base URL TAVILY_API_KEY ="tvly-"#os.getenv("TAVILY_API_KEY") # 新增:获取 Tavily Key # 初始化 OpenAI 客户端 client = AsyncOpenAI(base_url=BASE_URL,api_key=API_KEY) TEXT_MODEL = "qwen-max" # 或根据需要选用其他模型,如 gpt-3.5-turbo # --- 1. 任务分解函数 (保持不变) --- async def decompose_research_topic(topic: str) -> list[str] | None: # ... existing code ... print(f"--- 正在分解研究主题: {topic} ---") prompt_messages = [ { "role": "system", "content": """ 你是一个研究规划助手。请将用户提供的复杂研究主题或问题分解成一系列逻辑清晰、可按顺序执行的子任务或子问题。 这些子任务应有助于逐步深入理解主题。请以 JSON 格式返回结果,包含一个名为 "sub_tasks" 的数组,数组中的每个元素是一个描述子任务的字符串。 例如:{"sub_tasks": ["定义核心概念", "搜索相关背景信息", "分析主要观点", "查找案例研究", "总结发现"]} 确保步骤逻辑连贯且有助于深入研究。 """, }, { "role": "user", "content": f"请分解以下研究主题:'{topic}'", }, ] try: response = await client.chat.completions.create( model=TEXT_MODEL, messages=prompt_messages, response_format={"type": "json_object"}, max_tokens=1000, temperature=0.1, ) if response.choices and response.choices[0].message and response.choices[0].message.content: content = response.choices[0].message.content.strip() print(f"--- AI 任务分解原始响应 ---\n{content}\n--------------------------") try: task_data = json.loads(content) if isinstance(task_data.get("sub_tasks"), list): print("--- 分解得到的子任务 ---") for i, task in enumerate(task_data["sub_tasks"]): print(f"{i+1}. {task}") print("------------------------") return task_data["sub_tasks"] else: print("错误: AI 响应中未包含有效的 'sub_tasks' 列表。") return None ex.........完整代码请登录后点击上方下载按钮下载查看
网友评论0