赞
踩
---------------------如果这篇文章对你有帮助,请点赞收藏或者评论,非常感谢❤---------------------
在这个时代,智能代理(Intelligent Agents)正变得越来越受欢迎,它们能够帮助人们自动化处理各种复杂的任务,从而节省时间和精力。本教程旨在引导你如何使用 Python 创建一个简单的智能代理,它能利用 OpenAI 和 Google Search API 执行信息搜索任务。简单来说就是,你将运行该程序,告诉模型你想要获得的信息,之后模型将自动生成搜索词进行搜索,获取Google搜索的返回结果后,大语言模型进行总结后输出。下面是程序运行结果的一次展示:
在开始之前,请确保你的电脑上已经安装了 Python 3。你还需要安装几个必要的库,包括 requests 用于网络请求,以及 openai 库来调用 OpenAI 的 API。可以通过下面的命令来安装这些库:
pip install requests openai
接下来,你需要从 OpenAI(某宝购买或者其他提供大模型api的大厂比如文心一言) 和 Google 获取 API 密钥。
图片说明:Google Search开发者平台,有Google账号就可以登录获得一个api key(我打码的地方就是)
在本教程中,我们将创建一个 Agent 类,它能够处理用户输入,并利用 OpenAI 生成搜索查询。然后,通过 Google Search API 获取搜索结果,并将这些信息以摘要形式呈现给用户。
首先,我们定义一个 Tools 类,该类负责通过 Google Search API 执行搜索操作。此外,我们在其中定义了一个 _tools 方法,用于初始化工具及其参数。
当调用tool类的google_search函数的时候,谷歌的搜索结果将以文本(str)的方式返回。
import requests import json class Tools: def __init__(self, google_search_api_key) -> None: self.toolConfig = self._tools() self.google_search_api_key = google_search_api_key # 定义工具配置 def _tools(self): tools = [ { 'name_for_human': '谷歌搜索', 'name_for_model': 'google_search', 'description_for_model': '执行谷歌搜索并返回结果。', 'parameters': [ { 'name': 'search_query', 'description': '搜索关键词或短语', 'required': True, 'schema': {'type': 'string'}, } ], } ] return tools # 进行谷歌搜索 def google_search(self, search_query: str): url = "https://google.serper.dev/search" payload = json.dumps({ "q": search_query, "hl": "zh-cn", "num": 5 }) headers = { 'X-API-KEY': self.google_search_api_key, 'Content-Type': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) return response.text
Agent 类是智能代理的核心,它负责整合 OpenAI 和 Tools 类的功能。首先,它使用 OpenAI 生成基于用户输入的搜索查询。然后,调用 Tools 类执行搜索并获取结果。最后,再次利用 OpenAI 来摘要化搜索结果。
import openai from openai import OpenAI class Agent: def __init__(self, openai_api_key: str, google_search_api_key: str) -> None: self.openai_api_key = openai_api_key self.google_search_api_key = google_search_api_key self.client = OpenAI(api_key=self.openai_api_key) self.tools = Tools(google_search_api_key=self.google_search_api_key) def generate_search_queries(self, input_text: str) -> list: messages = [{"role": "user", "content": input_text}, {"role": "system", "content": "First, Generate 3 search queries from this text. 不用编号,并用英文逗号分隔."}] response = self.client.chat.completions.create( model="gpt-3.5-turbo", messages=messages, max_tokens=50, n=1, temperature=0.7, ) queries = response.choices[0].message.content.split(',') return queries def summarize_search_results(self, search_results: list) -> str: print(f'Summaring search results...') messages = [ {"role": "system", "content": "Summarize these search results in Chinese. 并从中提取有价值的资讯信息。"}, {"role": "user", "content": search_results} ] response = self.client.chat.completions.create( model="gpt-3.5-turbo", # 或其他可用模型 messages=messages, n=1, stop=None, temperature=0.7, ) summary = response.choices[0].message.content return summary def process_input(self, text: str): queries = self.generate_search_queries(text) # 模型会自动根据要求生成几个搜索词 search_results = '' for query in queries: result = self.tools.google_search(query.strip()) # Google Search返回搜索结果 search_results += result # 摘要化搜索结果 summary = self.summarize_search_results(search_results) # 摘要搜索结果 return summary ```
下面是如何使用这个智能代理的例子:
openai_api_key = "你的OpenAI API密钥"
google_search_api_key = "你的Google Search API密钥"
agent = Agent(openai_api_key=openai_api_key, google_search_api_key=google_search_api_key)
# 不断循环对话
while True:
input_ = input("请输入您的问题:")
response = agent.process_input(input_)
print(response)
请替换代码中的 “你的OpenAI API密钥” 和 “你的Google Search API密钥” 为你自己的 API 密钥。
在使用 API 密钥时,请确保不要公开你的密钥,避免不必要的安全风险。
虽然这个智能代理相对简单,但它展示了如何结合多个 API 来创建有用的自动化工具。你可以在此基础上扩展更多功能,例如支持更多语言的搜索、处理更复杂的查询等。
通过实践这个项目,你不仅能够学习如何使用 Python 和各种 API,还能够深入理解智能代理的工作原理及其在现实世界中的应用。希望这个教程能够为你的编程旅程提供帮助,激发你进一步探索和创新的兴趣。
这篇文章参考了公众号文章“动手做一个最小Agent——TinyAgent!”,感谢他的无私贡献。另外推荐您查看由Lilian Weng发布的文章“LLM Powered Autonomous Agents”,文章(几乎)第一次总结了基于LLM开发的自动Agent的重要组件及其应用场景。
如果这篇文章对你有帮助,也请点赞收藏或者评论,非常感谢❤
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。