3.2 阿里搜索引擎的使用(智能体工程)

发布时间:2026/8/13 10:01:04
3.2 阿里搜索引擎的使用(智能体工程) 智能体工程驱动AI Agent开发人工智能技术丛书【行情 报价 价格 评测】-京东前面我们使用Qwen大模型完成了基础模型的构建构建并在其基础上借助 Loop 循环实现了流式交互与并发工具调用的落地实践。但在之前的演示中我们采用的是虚拟工具模拟调用流程仅用于验证工具调用的逻辑闭环并未对接真实的网络服务难以满足实际开发需求。生态以阿里搜索为核心载体涵盖 AI 服务、地图服务、数据服务、开发工具等多个领域所有工具均支持普通用户免费试用接口规范、稳定性强完美适配我们之前搭建的大模型工具调用框架无需大幅修改代码即可替换虚拟工具实现真实功能调用。其核心优势在于 “免费易用、生态联动、无缝衔接”既能满足初学者的学习实践需求也能支撑简单商业场景的快速落地无需担心接口费用和技术门槛。3.2.1 阿里搜索引擎的开通我们首先需要通过阿里云百炼的控制台登录“AI搜索开发平台”的“服务广场”之后点击“立即开通”开通服务详情参看配套资源中的相关文档如图3-3所示。图3-3 联网搜索服务我们点击“联网搜索服务(web-search)”下方的“查看详情”打开“服务详情”页面如图3-4所示点击右边的“查看文档”链接打开页面如图3-5所示。图3-4 “服务详情”页面图3-5 “服务详情”页面图3-5所示页面右侧可以获取Curl请求示例部分主函数如下所示curl -X POST \-H Content-Type: application/json \-H Authorization: Bearer您的API-KEY \http://xxxx-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/web-search/ops-web-search-001 \-d {history: [{role: system, content: 你是一个机器人助手},{role: user, content: 浙江的省会是哪里},{role: assistant, content: 杭州}],query:杭州今日天气怎么样,query_rewrite:true,top_k:5,content_type:snippet}我们还需要获取待使用的公网域名以及对应的API Key如图3-6所示。图3-7 API Keys页面下面我们需要创建API Key并同时记录对应的域名如图3-8所示。图3-8 获取到的域名与API Key我们可以使用页面上提供的公网API域名读者可以自行保存这个域名。3.2.2 阿里搜索引擎的实现与使用下面我们结合阿里云AI搜索开放平台完成阿里搜索引擎的实现与使用代码如下所示import httpx# 配置区在AI搜索开放平台控制台「API Keys」页面获取from model_config import ModelConfig_cfg ModelConfig.get(ali_search)#所有凭据/域名由ModelConfig单一来源提供——这里不再保留任何默认值_API_KEY _cfg[api_key]_HOST _cfg[host]_WORKSPACE_NAME _cfg[workspace]_SERVICE_ID _cfg[service_id] # noqa: F841保留供外部模块导入SEARCH_URL fhttps://{_HOST}/v3/openapi/workspaces/{_WORKSPACE_NAME}/ web-search/{_SERVICE_ID}def ali_search(query: str, top_k: int 5, content_type: str snippet) - str:阿里云AI搜索开放平台联网搜索工具参数query:搜索词top_k:搜索返回结果数默认5content_type:搜索结果内容类型snippet摘要/ summary文本摘要/ mainText正文返回搜索结果字符串#请求头API-KEY认证headers {Authorization: fBearer {API_KEY},Content-Type: application/json,}#请求体query必填其余为可选参数payload {query: query,query_rewrite: True, #是否启用LLM对query进行重写top_k: top_k, #返回结果数content_type: content_type, #结果内容类型}try:resp httpx.post(SEARCH_URL, headersheaders, jsonpayload, timeout30)result resp.json()#接口报错时响应体含code/message字段如InvalidParameterif code in result:return f搜索失败{result.get(message, result.get(code))}#正常响应result.search_result为结果列表search_result result.get(result, {}).get(search_result, [])if not search_result:return f未找到「{query}」相关结果res [f{query}搜索结果]for i, item in enumerate(search_result, 1):title item.get(title, 无标题)link item.get(link, )snippet item.get(snippet, )res.append(f\n{i}. {title}\n链接{link}\n摘要{snippet})return \n.join(res)except Exception as e:return f搜索失败{str(e)}#测试if __name__ __main__:print(ali_search(北京今日天气怎么样))输出结果读者可以自行尝试学习。