---------------------如果这篇文章对你有帮助,请点赞收藏或者评论,非常感谢❤---------------------
在这个时代,智能代理(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 类
首先,我们定义一个 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 类
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的重要组件及其应用场景。
如果这篇文章对你有帮助,也请点赞收藏或者评论,非常感谢❤