一、为什么选择数眼智能构建 AI Agent?—— 解决联网型 Agent 的核心痛点
传统 AI 模型(如 ChatGPT)仅能被动生成回答,普通 AI Agent 虽能调用工具,但在实时联网场景中常踩坑:信息过期(用半年前的数据回答当前问题)、中文网页解析差(广告 / 弹窗淹没核心内容)、合规风险高(爬取数据易踩线)。
而数眼智能作为专为 LLM/AI Agent 设计的 “实时信息获取 + 提纯” 工具,能精准解决这些痛点 —— 它支持毫秒级实时抓取、中文网页深度适配(解析成功率超 99%)、结构化输出(JSON/Markdown)及全链路合规(符合 GDPR/CPRA),让 Agent 真正具备 “实时读懂世界” 的能力。
例如:
- 普通 Agent:用户问 “2025 年 Q3 新能源销量”,仅能返回 “需联网查询” 的提示;
- 数眼智能 Agent:用户问同样问题,能直接调用数眼 API 获取实时销量数据,并以结构化格式输出分析结果。
二、数眼智能 AI Agent 核心执行流程:五步实现 “实时联网 - 精准分析” 闭环
数眼智能 Agent 以 “LLM 决策 + 数眼联网” 为核心,形成完整执行链路,具体流程如下:
- 用户输入问题:提出需实时信息支撑的需求(如 “2025 年 Q3 中国新能源汽车销量 TOP3”);
- 获取数眼工具信息:加载数眼 API 的核心能力(实时抓取、中文解析、结构化输出);
- LLM 判断与指令生成:大模型(如 DeepSeek)解析用户意图,判断 “需联网” 后,生成数眼 API 调用指令(含查询词、输出格式等参数);
- 调用数眼工具执行:Agent 向数眼 API 发送请求,数眼返回实时、结构化的搜索结果(过滤广告 / 无效信息);
- 结果整合与响应:Agent 将数眼返回的数据整理为自然语言回答,若需进一步分析(如 “分析销量增长原因”),可触发新一轮数眼调用。
三、实战开发:用数眼智能 API 搭建 “实时资讯分析 Agent”
本次实战将搭建一个能实时获取行业数据、生成分析报告的 Agent,核心功能为 “联网搜索实时信息 + 结构化输出 + 多轮对话记忆”。
1. 环境准备:安装依赖库
数眼智能提供标准化 RESTful API,仅需安装基础请求库即可调用,执行如下命令:
pip install requests # 用于发送API请求 pip install deepseek-sdk # 用于集成DeepSeek大模型(也可替换为GPT/Claude)2. 数眼 API 配置:获取密钥与基础参数
首先需在数眼智能官网(https://shuyanai.com/?id=19)申请 API 密钥,配置核心参数:
- API_KEY:数眼账号生成的专属密钥(从环境变量加载,避免硬编码);
- BASE_URL:数眼 API 的基础地址(官方提供,如 “https://api.shuyanai.com/v1”);
- 支持参数:
query(搜索关键词)、output_format(输出格式:json/markdown)、source_filter(来源过滤:如 “权威媒体 / 政务网站”)。
3. 定义数眼搜索工具:封装 API 调用逻辑
创建shuyan_tools.py,定义调用数眼联网搜索的工具函数,实现 “输入查询词→返回结构化结果” 的功能:
import requests import os # 从环境变量加载数眼API密钥(安全起见,不硬编码) SHUYAN_API_KEY = os.getenv("SHUYAN_API_KEY") SHUYAN_BASE_URL = "https://api.shuyanai.com/v1/search" def search_with_shuyan(query: str, output_format: str = "markdown") -> str: """ 调用数眼智能API进行实时搜索,返回结构化结果 :param query: 搜索关键词(如“2025年Q3中国新能源汽车销量”) :param output_format: 输出格式,支持json/markdown :return: 数眼返回的结构化结果(字符串) """ headers = { "Authorization": f"Bearer {SHUYAN_API_KEY}", "Content-Type": "application/json" } data = { "query": query, "output_format": output_format, "source_filter": "authoritative" # 仅保留权威来源(如政府/行业报告) } try: # 发送POST请求调用数眼API response = requests.post(SHUYAN_BASE_URL, json=data, timeout=10) response.raise_for_status() # 捕获HTTP错误 return response.text # 返回结构化结果(如Markdown表格) except Exception as e: return f"数眼搜索失败:{str(e)}"4. 初始化 LLM 与 Agent:整合 “决策大脑” 与 “联网工具”
创建 Agent 类,集成 DeepSeek 大模型(作为决策大脑)和数眼搜索工具(作为执行器),实现 “理解需求→判断是否联网→调用工具→整合结果” 的逻辑:
from deepseek import DeepSeekClient from shuyan_tools import search_with_shuyan class ShuyanAgent: def __init__(self, llm_client: DeepSeekClient): self.llm = llm_client # 大模型客户端(决策核心) self.tools = {"search": search_with_shuyan} # 注册数眼搜索工具 self.system_prompt = """ 你是一个具备实时联网能力的AI智能体,需遵循以下规则: 1. 若用户需求涉及实时/动态信息(如最新数据、近期事件),必须调用“search”工具获取数眼智能的搜索结果; 2. 若需求无需联网(如常识问题),直接用自身知识回答; 3. 调用工具后,需将数眼返回的结构化结果整理为自然语言,避免直接输出原始数据。 """ def run(self, user_query: str, history: list = None) -> str: """ 执行Agent逻辑:处理用户查询,调用工具(如需),返回结果 :param user_query: 用户输入问题 :param history: 对话历史(用于多轮上下文) :return: 最终回答 """ history = history or [] # 1. 构造对话上下文(系统提示+历史+当前查询) messages = [{"role": "system", "content": self.system_prompt}] + history messages.append({"role": "user", "content": user_query}) # 2. 让LLM判断是否需要调用工具 llm_response = self.llm.chat.completions.create( model="deepseek-chat", messages=messages, tools=[{"type": "function", "function": {"name": "search", "parameters": {"type": "object", "properties": {"query": {"type": "string"}, "output_format": {"type": "string"}}}}] ) # 3. 若需调用工具,执行数眼搜索;否则直接返回LLM回答 if llm_response.choices[0].message.tool_calls: tool_call = llm_response.choices[0].message.tool_calls[0] if tool_call.function.name == "search": # 提取工具参数(查询词、输出格式) query = tool_call.function.arguments["query"] output_format = tool_call.function.arguments.get("output_format", "markdown") # 调用数眼搜索工具 search_result = self.tools["search"](query, output_format) # 将搜索结果传入LLM,生成最终回答 messages.append({"role": "tool", "content": search_result, "tool_call_id": tool_call.id}) final_response = self.llm.chat.completions.create(model="deepseek-chat", messages=messages) return final_response.choices[0].message.content else: return llm_response.choices[0].message.content5. 对话交互逻辑:实现多轮对话与历史记录管理
添加交互函数,支持用户多轮提问(如 “先查销量,再分析原因”),并限制历史记录长度(避免冗余):
def main(): # 初始化DeepSeek客户端(作为Agent的决策大脑) deepseek_client = DeepSeekClient( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com" ) # 创建数眼智能Agent agent = ShuyanAgent(llm_client=deepseek_client) history = [] MAX_HISTORY = 5 # 保留最近5轮对话(每轮含问题+回答) print("数眼智能实时资讯Agent已启动,输入'quit'结束对话\n") while True: user_query = input("请输入你的问题:") if user_query.lower() in ["quit", "exit"]: print("对话结束,感谢使用!") break # 调用Agent获取回答 response = agent.run(user_query, history) # 打印结果 print(f"\nAgent回答:\n{response}\n") # 更新对话历史 history.extend([ {"role": "user", "content": user_query}, {"role": "assistant", "content": response} ]) # 限制历史记录长度(超过后保留最新) if len(history) > MAX_HISTORY * 2: history = history[-MAX_HISTORY * 2:] if __name__ == "__main__": main()6. 完整代码整合:main.py
将上述逻辑整合为完整可执行的main.py,需确保环境变量中已配置SHUYAN_API_KEY和DEEPSEEK_API_KEY:
import requests import os from deepseek import DeepSeekClient # ---------------------- 数眼搜索工具定义 ---------------------- SHUYAN_API_KEY = os.getenv("SHUYAN_API_KEY") SHUYAN_BASE_URL = "https://api.shuyanai.com/v1/search" def search_with_shuyan(query: str, output_format: str = "markdown") -> str: headers = { "Authorization": f"Bearer {SHUYAN_API_KEY}", "Content-Type": "application/json" } data = { "query": query, "output_format": output_format, "source_filter": "authoritative" } try: response = requests.post(SHUYAN_BASE_URL, json=data, timeout=10) response.raise_for_status() return response.text except Exception as e: return f"数眼搜索失败:{str(e)}" # ---------------------- Agent类定义 ---------------------- class ShuyanAgent: def __init__(self, llm_client: DeepSeekClient): self.llm = llm_client self.tools = {"search": search_with_shuyan} self.system_prompt = """ 你是一个具备实时联网能力的AI智能体,需遵循以下规则: 1. 若用户需求涉及实时/动态信息(如最新数据、近期事件),必须调用“search”工具获取数眼智能的搜索结果; 2. 若需求无需联网(如常识问题),直接用自身知识回答; 3. 调用工具后,需将数眼返回的结构化结果整理为自然语言,避免直接输出原始数据。 """ def run(self, user_query: str, history: list = None) -> str: history = history or [] messages = [{"role": "system", "content": self.system_prompt}] + history messages.append({"role": "user", "content": user_query}) llm_response = self.llm.chat.completions.create( model="deepseek-chat", messages=messages, tools=[{"type": "function", "function": {"name": "search", "parameters": {"type": "object", "properties": {"query": {"type": "string"}, "output_format": {"type": "string"}}}}] ) if llm_response.choices[0].message.tool_calls: tool_call = llm_response.choices[0].message.tool_calls[0] if tool_call.function.name == "search": query = tool_call.function.arguments["query"] output_format = tool_call.function.arguments.get("output_format", "markdown") search_result = self.tools["search"](query, output_format) messages.append({"role": "tool", "content": search_result, "tool_call_id": tool_call.id}) final_response = self.llm.chat.completions.create(model="deepseek-chat", messages=messages) return final_response.choices[0].message.content else: return llm_response.choices[0].message.content # ---------------------- 交互逻辑 ---------------------- def main(): deepseek_client = DeepSeekClient( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com" ) agent = ShuyanAgent(llm_client=deepseek_client) history = [] MAX_HISTORY = 5 print("数眼智能实时资讯Agent已启动,输入'quit'结束对话\n") while True: user_query = input("请输入你的问题:") if user_query.lower() in ["quit", "exit"]: print("对话结束,感谢使用!") break response = agent.run(user_query, history) print(f"\nAgent回答:\n{response}\n") history.extend([ {"role": "user", "content": user_query}, {"role": "assistant", "content": response} ]) if len(history) > MAX_HISTORY * 2: history = history[-MAX_HISTORY * 2:] if __name__ == "__main__": main()四、执行流程实战演示:实时新能源销量分析案例
以 “获取 2025 年 Q3 中国新能源汽车销量 TOP3 品牌,并分析各品牌增长原因” 为例,演示 Agent 完整执行过程:
1. 用户输入问题
请输入你的问题:获取2025年Q3中国新能源汽车销量TOP3品牌,并分析各品牌增长原因2. Agent 决策与工具调用
- LLM 解析需求:判断 “2025 年 Q3 销量” 为实时数据,需调用数眼搜索工具;
- 生成工具指令:
query="2025年Q3中国新能源汽车销量TOP3品牌及增长原因",output_format="markdown"; - 调用数眼 API:数眼实时抓取中汽协、乘联会等权威来源数据,过滤广告后返回结构化结果(示例):
# 2025年Q3中国新能源汽车销量TOP3品牌 | 排名 | 品牌 | 销量(万辆) | 同比增长 | 核心增长原因 | |------|------|--------------|----------|--------------| | 1 | 比亚迪 | 85.2 | 18.5% | 混动车型(秦PLUS DM-i)销量破20万,海外市场(东南亚)增长40% | | 2 | 理想 | 32.1 | 25.3% | L9 Max车型交付量创新高,家庭用户订单占比超70% | | 3 | 蔚来 | 28.7 | 30.1% | 新ES6车型上市,换电网络覆盖新增100座城市 |3. Agent 整合结果输出
Agent回答: 根据数眼智能获取的2025年Q3中国新能源汽车权威销量数据(来源:中汽协、乘联会),销量TOP3品牌及增长原因如下: 1. **比亚迪(85.2万辆,同比+18.5%)** 核心增长依赖混动车型与海外扩张:旗下秦PLUS DM-i混动车型本季度交付量突破20万辆,占品牌总销量23.5%;同时东南亚市场表现亮眼,销量同比增长40%,成为海外第一增长极。 2. **理想(32.1万辆,同比+25.3%)** 家庭用户需求持续释放:旗舰车型L9 Max凭借“六座大空间+智能座舱”优势,本季度交付量达14.8万辆,占品牌销量46.1%;此外,理想L7的改款车型新增“儿童安全监测”功能,进一步吸引家庭群体。 3. **蔚来(28.7万辆,同比+30.1%)** 新产品与换电网络双重驱动:新ES6车型于Q3初上市,首月订单破3万辆,带动品牌整体销量;同时换电网络新增100座城市,覆盖全国90%以上地级市,缓解用户补能焦虑。五、总结:数眼智能如何重塑联网型 AI Agent 开发
通过数眼智能 API 与 DeepSeek 大模型,我们用不足 200 行代码实现了 “实时联网 + 精准分析” 的 AI Agent,其核心价值体现在三点:
- 解决联网痛点:毫秒级实时数据、中文网页深度适配、全链路合规,让 Agent 摆脱 “信息过期”“内容杂乱”“合规风险” 的困扰;
- 降低开发门槛:标准化 RESTful API + 结构化输出,无需开发复杂爬虫,几行代码即可集成联网能力;
- 拓展应用边界:从 “实时资讯分析” 可延伸至舆情监控(实时跟踪品牌负面)、金融数据(股票行情更新)、政务查询(政策文件抓取)等场景,适配企业级需求。
未来,随着数眼智能对多源信息验证、跨模态搜索(图文 / 音频)的优化,联网型 AI Agent 将进一步打通 “实时信息获取→深度分析→决策建议” 的全链路,成为企业数字化转型的核心工具。