源文件:chapter1/web-search-agent/README.md Kimi Web Search Agent 🔍 一个基于 Kimi API 的智能搜索 Agent,能够理解用户问题,自动进行网络搜索并总结答案。 📋 项目概述 本项目实现了一个自主式 AI Agent,利用 Kimi(Moonshot AI)的内置 Web 搜索工具(search 和 crawl),能够: 🤔 智能理解:分析用户问题,识别关键信息需求 🔍 自动搜索:使用 Kimi 的内置 $websearch 工具获取实时网络信息 🔄 迭代搜索:可以多次调用搜索工具获取更全面的信息 📝 智能总结:综合多源信息,生成准确、全面的答案 🏗️ 架构设计 🚀 快速开始 安装依赖 配置 API Key
源文件:chapter1/web-search-agent/README.md
一个基于 Kimi API 的智能搜索 Agent,能够理解用户问题,自动进行网络搜索并总结答案。
本项目实现了一个自主式 AI Agent,利用 Kimi(Moonshot AI)的内置 Web 搜索工具(search 和 crawl),能够:
pip install -r requirements.txt
从 Moonshot AI 平台 获取 API Key,然后设置环境变量:
export MOONSHOT_API_KEY='your-api-key-here'
或创建 .env 文件:
MOONSHOT_API_KEY=your-api-key-here
注意: 为了向后兼容,系统也支持使用 KIMI_API_KEY 环境变量。
通用兜底(OpenRouter): 若未设置 MOONSHOT_API_KEY/KIMI_API_KEY 但设置了OPENROUTER_API_KEY,请求会自动改走 OpenRouter,使用 OPENROUTER_MODEL(默认openai/gpt-5.6-luna)。重要限制:Kimi 内置的 $web_search 工具是 Moonshot 专有能力,
在 OpenRouter 上不可用——因此兜底模式下模型仅凭自身知识作答,没有实时联网搜索。
如需真正的联网搜索,请使用 Moonshot 主 key。
main.py 提供了完整的命令行接口(中文帮助)。查看全部参数:
python main.py --help
| 参数 | 说明 | 默认值 |
|---|---|---|
query |
要提问的问题(位置参数);省略则进入交互模式 | 无 |
--provider |
搜索后端:kimi(调用内置 $web_search,需 API Key)/ offline-demo(离线示例轨迹) |
kimi |
--model |
模型名称 | kimi-k3 |
--max-steps |
最大 ReAct 迭代次数 | 5 |
--base-url |
API 基础 URL | https://api.moonshot.cn/v1 |
--api-key |
Kimi API Key(默认读环境变量) | 环境变量 |
--output, -o |
将问题、ReAct 轨迹与答案保存为 JSON | 无 |
--quiet |
不实时打印 ReAct 轨迹 | 打印 |
离线演示 ReAct 循环(无需 API Key,回放示例轨迹,直观展示“想→做→看”):
python main.py --provider offline-demo
交互模式(持续对话):
python main.py
单次问答(运行时逐步打印思考/行动/观察轨迹):
python main.py "2024年诺贝尔物理学奖获得者是谁?" python main.py "比特币现价" --max-steps 3 --output result.json
快速体验(引导式交互):
python quickstart.py
高级示例:
python examples.py
💡 运行时会实时打印 ReAct 轨迹:💭 思考 → 🔧 行动(调用
$web_search)→ 👀 观察(搜索结果)→ ✅ 最终答案,对应本章讲的“想→做→看”循环。agent.get_trace()可获取结构化轨迹,--output可将其存为 JSON。
from agent import WebSearchAgent from config import Config # 创建 Agent agent = WebSearchAgent(api_key=Config.get_api_key()) # 提问并获取答案 question = "Python 3.12 有哪些新特性?" answer = agent.search_and_answer(question) print(answer)
运行高级示例:
python examples.py
包含以下功能:
agent.py - 核心 Agent 实现WebSearchAgent: 主要的 Agent 类search_and_answer(): 执行 ReAct 循环并生成答案的主方法get_trace(): 返回上一次运行的结构化 ReAct 轨迹(思考/行动/观察/最终答案)_chat(): 与 Kimi API 进行对话交互_get_system_prompt(): 获取系统提示,定义 Agent 行为_get_tools(): 定义可用的工具($web_search)search_impl(): 搜索实现的抽象层,便于扩展format_trace_step(): 将一条轨迹步骤渲染为可读文本run_offline_demo(): 离线回放示例轨迹,无需 API Key 即可演示 ReAct 循环config.py - 配置管理main.py - 主程序入口build_parser(): argparse 命令行接口(中文帮助,见 --help)run_interactive_mode(): 交互式对话模式run_single_question(): 单次问答模式--provider offline-demo)与 JSON 结果输出(--output)quickstart.py - 快速体验脚本demo_search(): 演示搜索功能interactive_mode(): 简化的交互模式examples.py - 高级示例AdvancedWebSearchAgent: 扩展功能的 Agent 类batch_search(): 批量处理多个问题search_with_context(): 带上下文的搜索comparative_search(): 比较多个项目fact_check(): 事实验证功能example_research_assistant(): 深度研究示例| 配置项 | 说明 | 默认值 |
|---|---|---|
MOONSHOT_API_KEY |
Moonshot AI API 密钥 | 必填 |
KIMI_API_KEY |
旧版 API 密钥变量名(向后兼容) | 可选 |
KIMI_BASE_URL |
API 基础 URL | https://api.moonshot.cn/v1 |
DEFAULT_MODEL |
默认模型 | kimi-k3 |
MAX_SEARCH_ITERATIONS |
最大搜索迭代次数(Config 中设置) | 5 |
SEARCH_TIMEOUT |
搜索超时时间(秒) | 30 |
temperature |
控制生成内容的创造性 | 0.6 |
$web_search 内置函数MIT License
作者: AI Agent 实战训练营
版本: 1.0.0
更新时间: 2024