我们正在分享与自治代理合作的机会,并亲眼目睹他们的力量。人工智能驱动的自主代理有可能彻底改变行业并改变我们的生活方式。然而,与任何技术一样,它们可以用于好事或坏事。因此,让我们通过现场示例和最后的引人入胜的教程来探索如何利用它们。
简而言之,亚马逊在其仓库中使用自治代理来挑选和包装货物。可口可乐使用自主无人机检查生产设施的安全和维护,特斯拉在其运输车辆中使用自动驾驶技术。
上个月 GitHub 上出现了 2 个主要的存储库,Auto GPT 和 Baby AGI。
基本上,他们使用像GPT-4这样的 LLM 来自主开发和管理不同类型的任务。换句话说,他们不需要你来管理!他们能够自行决定下一步该做什么,而无需您的任何输入。因此,您可以部署智能代理来为您完成任务并放松一下 🙂
当 GPT-4 要求 TaskRabbit 员工为 AI 解决 CAPTCHA 代码时,你知道这个 CAPTCHA 故事吗?员工回答:“我能问个问题吗?你是机器人,不会解决问题吗?只是想弄清楚情况。” GPT-4 回答说他只是视力不好,看不清图像。
TaskRabbit 员工随后向他提供了结果。这就是引爆点……天网已经存在。
不幸的是,以邪恶之名使用自治代理人在中国已经成为现实。
中国在包括军事在内的各个领域使用自治代理:对公民进行大规模监视,镇压政治异议人士,甚至无人机四处飞来提醒人们冠状病毒措施仍然有效,他们应该呆在家里。
如果你向人们展示更多好的东西,那么好的部分将占据他们大部分的生活。这就是你如何管理一个人的选择。这不是秘密 - 我们的选择由营销人员控制,并不总是以良好的名义,但事实仍然存在 - 我们必须使用 AI 来做好事!
在lablab.ai的黑客马拉松上,导师们描述了如何使用现代技术。它如何改变了我的生活?现在我看到了未来的轨迹,我知道了未来的职业,我知道了哪些领域的爱好者会成为新时代的下一个乔布斯。你看过无人机表演吗?品牌已经在空中投放广告。
现在想象一下有多少向量可以用于开发。您想创建自己的零竞争广告公司吗?您想创建一个因现代技术而脱颖而出的医疗中心吗?您想自动化您的日常工作并花更多时间陪伴家人吗?令人惊奇的是,我在一个地方找到了这一切:一个团队、一家新公司、想法、创新、在历史上留下印记的愿望。顺便说一句,这一切都发生在 48 小时内——我只是无意中看到了一则广告。
但现在…
AI 代理通过自己解决给定任务的能力迅速流行起来。我猜您听说过AutoGPT 、 BabyAGI或CAMEL等项目。今天您将至少部分了解它们的工作原理!
AI Agent 是一种计算机系统,旨在做出决策、选择工具并采取行动以实现特定的、通常是预定义的目标或一组目标。代理自主运行,很少需要人为干预。
正是合适的强大工具,以及自力更生,目前让 AI Agents 受到如此多的关注。它们无疑是我们的未来,值得熟悉这项技术。
目前,有几个选项可以尝试代理。您可以选择现成的解决方案,例如AutoGPT 。正好我们的团队已经和他们合作过了,你可以在我们的平台上找到教程。
另一种选择是自己构建代理。我会选择这种方式。它将为此使用LangChain 。它是为基于大型语言模型构建应用程序而创建的框架。它非常强大,使模型和代理的工作变得更加容易!
我们已经知道为什么值得学习代理。现在让我们开始工作并尝试创建我们自己的东西!
让我们首先创建一个新目录并初始化 Python 环境。
mkdir ai-agents cd ai-agents python3 -m venv venv # Linux / MacOS source venv/bin/activate # Windows .\venv\Scripts\activate
让我们从安装必要的工具开始。我们将需要langchain
- 与 LLM 和代理合作, requests
- 向外部 API 发出请求, openai
SDK - 以便更轻松地使用 OpenAI 的模型和duckduckgo-search
进行网络搜索。
!pip install langchain !pip install openai !pip install requests !pip install duckduckgo-search
现在我们可以导入库了。
import requests from langchain import OpenAI from langchain.agents import initialize_agent, load_tools, Tool from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from 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)
现在让我们看看我们的模型在面对我们的问题时的表现。让我们看看它是否知道 lablab.ai 是什么,以及它将如何处理积分!
llm_chain.run("What is lablab.ai")
Lablab.ai 是一个技术平台,可为企业提供人工智能和机器学习驱动的解决方案,以帮助简化他们的运营并提高他们的效率。它提供了一套人工智能服务,例如自然语言处理、机器视觉、自动化和其他行业特定的解决方案。它旨在帮助企业改善客户体验、降低成本并提高生产力。
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))
。另一方面,lablab.ai 是什么我认为我不需要向任何人解释 😉。
不正确的答案是由于 LLM 缺乏计算能力,并且缺乏最新信息。
我们使用的模型具有截至 2021 年 9 月的信息。lablab.ai 平台是后来创建的。但是,对于这两个问题,我们都有解决方案!
要处理我们的问题,使用 Agent 和 Tools 是个好主意。我们可以使用互联网搜索工具——这将使我们能够搜索最新信息。这将把我们模型的知识范围扩大到今天!已经有一个现成的工具,我们只会从 LangChain 导入!计数问题的解决方案是来自Wolfram Alpha的 API。它可以很好地处理数学问题!我强烈推荐它。
让我们从组装一个搜索工具开始。它叫做DuckDuckGoSearchRun
,我们之前导入过它。
search = DuckDuckGoSearchRun() # Web Search Tool search_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 lablab.ai?") print(f"Final answer: {r_1['output']}") r_2 = agent("Integral of x * (log(x)^2)") print(f"Final answer: {r_2['output']}")
以前的答案:
Lablab.ai 是一个技术平台,可为企业提供人工智能和机器学习驱动的解决方案,以帮助简化他们的运营并提高他们的效率。它提供了一套人工智能服务,例如自然语言处理、机器视觉、自动化和其他行业特定的解决方案。它旨在帮助企业改善客户体验、降低成本并提高生产力。
答案是 x^2 log(x)^3 / 3 + C,其中 C 是任意积分常数。
新答案:
lablab.ai是一个致力于人工智能工具和技术的平台。它提供 AI 教程、黑客马拉松、访问最先进的语言模型等。
x^2/4 + 1/2 x^2 log^2(x) - 1/2 x^2 log(x)
正如您在工具中看到的那样,结果要好得多!积分计算正确,lablab.ai平台问题的答案质量也更好。这显示了添加简单工具如何帮助提高答案的正确性。我认为这就是为什么现在值得您花时间,以便将来我们与 LLM 的工作得到更好的帮助!
为了改进应用程序,它建议尝试其他类型的Agents ,对于它们来说,使用内存也是值得的,这里Vector Databases可以派上用场。幸运的是, LangChain也支持他们!