开源模型 引言 AI代理是生成式人工智能领域令人兴奋的发展,使大型语言模型(LLMs)从助手演变为能够采取行动的代理。AI代理框架使开发人员能够创建应用程序,让LLMs访问工具和状态管理。这些框架还增强了可见性,让用户和开发人员可以监控LLMs计划执行的操作,从而改进体验管理。 本课程将涵盖以下内容: 了解什么是AI代理——AI代理到底是什么? 探索四种不同的AI代理框架——它们的独特之处是什么? 将这些AI代理应用于不同的使用场景——我们何时应该使用AI代理? 学习目标 完成本课程后,您将能够: 解释AI代理是什么以及如何使用它们。 理解一些流行的AI代理框架之间的差异,并了解它们的不同之处。 了解AI代理的工作原理,以便使用它们构建应用程序。 什么是AI代理?

AI代理是生成式人工智能领域令人兴奋的发展,使大型语言模型(LLMs)从助手演变为能够采取行动的代理。AI代理框架使开发人员能够创建应用程序,让LLMs访问工具和状态管理。这些框架还增强了可见性,让用户和开发人员可以监控LLMs计划执行的操作,从而改进体验管理。
本课程将涵盖以下内容:
完成本课程后,您将能够:
AI代理是生成式人工智能领域非常令人兴奋的一个领域。伴随着这种兴奋感,有时也会出现术语和应用的混淆。为了保持简单并涵盖大多数称为AI代理的工具,我们将使用以下定义:
AI代理允许大型语言模型(LLMs)通过提供对状态和工具的访问来执行任务。

让我们定义这些术语:
大型语言模型 - 这些是本课程中提到的模型,如GPT-3.5、GPT-4、Llama-2等。
状态 - 这指的是LLM正在工作的上下文。LLM使用其过去行为的上下文和当前上下文来指导后续行动的决策。AI代理框架使开发人员更容易维护这种上下文。
工具 - 为了完成用户请求的任务,LLM需要访问工具。一些工具的例子包括数据库、API、外部应用程序甚至另一个LLM!
这些定义希望为您提供一个良好的基础,以了解它们是如何实现的。让我们探索一些不同的AI代理框架:
LangChain代理 是我们上面提供的定义的实现。
为了管理状态,它使用了一个名为AgentExecutor的内置函数。该函数接受可用的agent和tools。
Agent Executor还存储聊天历史以提供聊天背景。

LangChain提供了一个工具目录,您可以将其导入应用程序,使LLM能够访问这些工具。这些工具是由社区和LangChain团队制作的。
然后,您可以定义这些工具并将它们传递给Agent Executor。
当谈到AI代理时,可见性是另一个重要的方面。对于应用程序开发人员来说,了解LLM正在使用哪个工具以及原因非常重要。为此,LangChain团队开发了LangSmith。
接下来要讨论的AI代理框架是AutoGen。AutoGen的主要焦点是对话。代理既是可对话的也是可定制的。
可对话的 - LLM可以与另一个LLM开始并继续对话以完成任务。这是通过创建AssistantAgents并赋予它们特定的系统消息来实现的。
autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, )
可定制的 - 代理不仅可以用作LLM,还可以用作用户或工具。作为开发人员,您可以定义一个UserProxyAgent,负责在完成任务时与用户进行交互以获取反馈。这种反馈可以继续执行任务,也可以停止任务。
user_proxy = UserProxyAgent(name="user_proxy")
为了改变和管理状态,助手代理生成Python代码以完成任务。
这是一个过程示例:

system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done."
这个系统消息指示该特定LLM哪些功能与其任务相关。记住,在AutoGen中,您可以拥有多个具有不同系统消息的定义助手代理。
user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", )
来自用户代理(人类)的消息将启动代理探索应执行的可能功能的过程。
chatbot (to user_proxy): ***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- >>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR ****************************************************************
一旦初始对话处理完毕,代理将发送建议的工具调用。在这种情况下,它是名为get_weather. Depending on your configuration, this function can be automatically executed and read by the Agent or can be executed based on user input.
You can find a list of AutoGen code samples to further explore how to get started building.
The next agent framework we will explore is Taskweaver. It is known as a "code-first" agent because instead of working strictly with strings , it can work with DataFrames in Python. This becomes extremely useful for data analysis and generation tasks. This can be things like creating graphs and charts or generating random numbers.
To manage the state of the conversation, TaskWeaver uses the concept of a Planner. The Planner is a LLM that takes the request from the users and maps out the tasks that need to be completed to fulfill this request.
To complete the tasks the Planner is exposed to the collection of tools called Plugins的功能。这可以是Python类或通用代码解释器。这些插件被存储为嵌入式内容,以便LLM更好地搜索正确的插件。

这里是一个处理异常检测的插件示例:
class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):
执行前会验证代码。Taskweaver管理对话上下文的另一个特性是experience. Experience allows for the context of a conversation to be stored over to the long term in a YAML file. This can be configured so that the LLM improves over time on certain tasks given that it is exposed to prior conversations.
The last agent framework we will explore is JARVIS. What makes JARVIS unique is that it uses an LLM to manage the state,对话中的其他AI模型是其他的AI模型。每个AI模型都是专门用于某些任务的模型,例如对象检测、转录或图像描述。

LLM作为通用模型,接收来自用户的请求并识别特定任务以及完成任务所需的数据或参数。
[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "https://www.aiknowledge.cn/images/面向初学者的生成式AI课程/e1.webp" }}]
然后,LLM将以专门的AI模型可以理解的方式格式化请求,例如JSON。一旦AI模型基于任务返回预测结果,LLM就会收到响应。
如果需要多个模型来完成任务,它还将解释来自这些模型的响应,然后将它们结合起来生成用户响应。
下面是一个示例,展示了当用户请求一张图片中对象的描述和数量时,这将如何工作:
为了继续学习AI代理,您可以使用AutoGen构建以下内容:
完成本课程后,请查看我们的生成式AI学习集合,继续提升您的生成式AI知识!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。