介绍
AI 代理通过自己解决给定任务的能力迅速流行起来。我猜您听说过 AutoGPT、BabyAGI 或 CAMEL 等项目。今天您将至少部分了解它们的工作原理!
什么是人工智能代理?
AI Agent 是一种计算机系统,旨在做出决策、选择工具并采取行动以实现特定的、通常是预定义的目标或一组目标。代理自主运行,很少需要人为干预。
正是合适的强大工具,以及自力更生,目前让 AI Agents 受到如此多的关注。它们无疑是我们的未来,值得熟悉这项技术。
如何使用AI代理?
目前,有几个选项可以尝试代理。您可以选择现成的解决方案,例如 AutoGPT。正好我们的团队已经和他们合作过了,你可以在我们的平台上找到教程。
另一种选择是自己构建代理。我会选择这种方式。它将为此使用 LangChain。它是为基于大型语言模型构建应用程序而创建的框架。它非常强大,使模型和代理的工作变得更加容易!
编码部分
我们已经知道为什么值得学习代理。现在让我们开始工作并尝试创建我们自己的东西!
项目结构
让我们首先创建一个新目录并初始化 Python 环境。
mkdir ai-agentscd ai-agentspython3 -m venv venv# Linux / MacOSsource venv/bin/activate# Windows.\\venv\\Scripts\\activate
依赖关系
让我们从安装必要的工具开始。我们将需要langchain
– 与 LLM 和代理合作,requests
– 向外部 API、SDK 发出请求,openai
以便更轻松地使用 OpenAI 的模型和duckduckgo-search
进行网络搜索。
!pip install langchain!pip install openai!pip install requests!pip install duckduckgo-search
现在我们可以导入库了。
import requestsfrom langchain import OpenAIfrom langchain.agents import initialize_agent, load_tools, Toolfrom langchain.chains import LLMChainfrom langchain.prompts import PromptTemplatefrom langchain.tools import DuckDuckGoSearchRun
在这一点上,我想从 OpenAI 定义 LLM。我将在本教程中使用 GPT-3。你可以玩其他模型。我还将定义初始提示并为此模型创建一个链。
OPENAI_API_KEY = "sk-..."llm = OpenAI( openai_api_key=OPENAI_API_KEY, temperature=0.8, model_name="text-davinci-003")prompt = PromptTemplate( input_variables=["query"], template="You are New Native Internal Bot. Help users with their important tasks, like a professor in a particular field. Query: {query}")llm_chain = LLMChain(llm=llm, prompt=prompt)
没有任何工具的测试模型
现在让我们看看我们的模型在面对我们的问题时的表现。让我们看看它是否知道 aihubpro.cn是什么,以及它将如何处理积分!
llm_chain.run("What is aihubpro.cn")
aihubpro.cn 是一个技术平台,可为企业提供人工智能和机器学习驱动的解决方案,以帮助简化他们的运营并提高他们的效率。它提供了一套人工智能服务,例如自然语言处理、机器视觉、自动化和其他行业特定的解决方案。它旨在帮助企业改善客户体验、降低成本并提高生产力。
llm_chain.run("Integral of x * (log(x)^2)")
答案是 x^2 log(x)^3 / 3 + C,其中 C 是任意积分常数。
如您所见,这两个答案都是错误的。积分的正确值为:1/4 x^2 (1 - 2 log(x) + 2 log^2(x))
。另一方面,aihubpro.cn是什么我认为我不需要向任何人解释 😉。
不正确的答案是由于 LLM 缺乏计算能力,并且缺乏最新信息。我们使用的模型具有截至 2021 年 9 月的信息。aihubpro.cn平台是后来创建的。但是,对于这两个问题,我们都有解决方案!
为代理准备工具
要处理我们的问题,使用 Agent 和 Tools 是个好主意。我们可以使用互联网搜索工具——这将使我们能够搜索最新信息。这将把我们模型的知识范围扩大到今天!已经有一个现成的工具,我们只会从 LangChain 导入!计数问题的解决方案是来自 Wolfram Alpha 的 API。它可以很好地处理数学问题!我强烈推荐它。
让我们从组装一个搜索工具开始。它被称为DuckDuckGoSearchRun
我们之前已经导入它。
search = DuckDuckGoSearchRun()# Web Search Toolsearch_tool = Tool( name = "Web Search", func=search.run, description="A useful tool for searching the Internet to find information on world events, issues, etc. Worth using for general topics. Use precise questions.")
就那么简单!现在让我们创建一个解决数学问题的工具。我们将为此创建一个自定义类。Wolfram Alpha 创建了许多 API,但我将使用最简单的一种。
class WA: """ Wolfram|Alpha API """ def __init__(self, app_id): self.url = f"http://api.wolframalpha.com/v1/result?appid={app_id}&i=" def run(self, query): query = query.replace("+", " plus ").replace("-", " minus ") # '+' and '-' are used in URI and cannot be used in request result = requests.post(f"{self.url}{query}") if not result.ok: raise Exception("Cannot call WA API.") return result.text
该 API 将以自然语言处理请求并返回结果。这对我们来说是完美的!run
方法将处理!现在让我们定义我们的工具。
WA_API_KEY = "<WA_API_KEY>" # You can get it here: https://products.wolframalpha.com/api/wa = WA(app_id=WA_API_KEY)wa_tool = Tool( name="Wolfram|Alpha API", func=wa.run, description="Wolfram|Alpha API. It's super powerful Math tool. Use it for simple & complex math tasks.")
创建代理并测试性能
好的,最后一步是创建一个代理,给它工具并检查结果。我们开始做吧!
agent = initialize_agent( agent="zero-shot-react-description", tools=[wa_tool, search_tool], llm=llm, verbose=True, # I will use verbose=True to check process of choosing tool by Agent max_iterations=3)
让我们看看以前的提示!
r_1 = agent("What is aihubpro.cn?")print(f"Final answer: {r_1['output']}")r_2 = agent("Integral of x * (log(x)^2)")print(f"Final answer: {r_2['output']}")
以前的答案:
aihubpro.cn是一个技术平台,可为企业提供人工智能和机器学习驱动的解决方案,以帮助简化他们的运营并提高他们的效率。它提供了一套人工智能服务,例如自然语言处理、机器视觉、自动化和其他行业特定的解决方案。它旨在帮助企业改善客户体验、降低成本并提高生产力。
答案是 x^2 log(x)^3 / 3 + C,其中 C 是任意积分常数。
新答案:
aihubpro.cn是一个致力于人工智能工具和技术的平台。它提供 AI 教程、黑客马拉松、访问最先进的语言模型等。
x^2/4 + 1/2 x^2 log^2(x) – 1/2 x^2 log(x)
结论
正如您在工具中看到的那样,结果要好得多!积分计算正确,aihubpro.cn平台问题的答案质量也更好。这显示了添加简单工具如何帮助提高答案的正确性。我认为这就是为什么现在值得您花时间,以便将来我们与 LLM 的工作得到更好的帮助!
有什么可以改进的?
为了改进应用程序,它建议尝试其他类型的代理,对于它们来说,使用内存也是值得的,这里矢量数据库可以派上用场。
用 AI 塑造未来。
成为AIHubPro.cn的一部分
谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站