LangChain系列文章
Agents的核心思想是使用语言模型选择一系列需要采取的行动。在链式结构中,一系列的行动是硬编码的(在代码中)。在Agents中,语言模型被用作推理引擎,以确定需要采取哪些行动,以及采取这些行动的顺序。
这是负责决定下一步该采取什么行动的链条。这是由语言模型和提示驱动的。这个链条的输入包括:
输出是下一步要采取的行动或发送给用户的最终响应(AgentActions或AgentFinish)。一个行动指定一个工具和该工具的输入。
不同的代理有不同的推理提示风格,不同的编码输入方式以及不同的解析输出方式。有关内置代理的完整列表,请参见代理类型。您还可以轻松构建自定义代理,我们将在下面的入门部分中展示如何做到这一点。
BabyAGI这个 Python 脚本是一个使用人工智能技术的任务管理系统的示例。该系统使用 OpenAI 和矢量数据库,比如 Chroma 或 Weaviate,来创建、排序和执行任务。这个系统的主要思想是根据先前任务的结果和预定义的目标来创建任务。然后,脚本利用 OpenAI 的自然语言处理(NLP)能力根据目标创建新任务,并利用 Chroma/Weaviate 来存储和检索任务结果以获取上下文信息。这是原始任务驱动自主代理的简化版本。
该脚本通过运行一个无限循环来完成以下步骤:
execution_agent()
函数是使用OpenAI API的地方。它接受两个参数:目标和任务。然后它向OpenAI的API发送提示,返回任务的结果。提示包括AI系统任务的描述、目标和任务本身。然后将结果作为字符串返回。task_creation_agent()
函数是使用OpenAI的API基于目标和先前任务的结果创建新任务的地方。该函数接受四个参数:目标、先前任务的结果、任务描述和当前任务列表。然后向OpenAI的API发送提示,返回一组新任务作为字符串列表。然后该函数将新任务作为字典列表返回,其中每个字典包含任务的名称。
prioritization_agent()
函数是使用OpenAI的API重新设置任务列表的地方。该函数接受一个参数,即当前任务的ID。它向OpenAI的API发送提示,返回重新设置优先级的任务列表作为编号列表。
最后,脚本使用Chroma/Weaviate
来存储和检索任务结果以获取上下文。脚本根据TABLE_NAME变量中指定的表名创建一个Chroma/Weaviate
集合。然后使用Chroma/Weaviate将任务的结果以及任务名称和任何附加元数据存储在集合中。
本指南将帮助您了解创建自己的递归代理的组件。
尽管 BabyAGI 使用特定的向量库/模型提供程序(Pinecone、OpenAI),但使用 LangChain 实现它的好处之一是您可以轻松地将它们换成不同的选项。在这个实现中,我们使用FAISS向量存储(因为它在本地运行并且是免费的)。
from typing import Optional
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI
from langchain_experimental.autonomous_agents import BabyAGI
from langchain.docstore import InMemoryDocstore
from langchain.vectorstores import FAISS
# Define your embedding model
embeddings_model = OpenAIEmbeddings()
# Initialize the vectorstore as empty
import faiss
embedding_size = 1536
index = faiss.IndexFlatL2(embedding_size)
vectorstore = FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {})
OBJECTIVE = "Write a weather report for SF today"
llm = OpenAI(temperature=0)
# Logging of LLMChains
verbose = False
# If None, will keep on going forever
max_iterations: Optional[int] = 3
baby_agi = BabyAGI.from_llm(
llm=llm, vectorstore=vectorstore, verbose=verbose, max_iterations=max_iterations
)
baby_agi({"objective": OBJECTIVE})
*****TASK LIST*****
1: Make a todo list
*****NEXT TASK*****
1: Make a todo list
*****TASK RESULT*****
1. Check the weather forecast for San Francisco today
2. Make note of the temperature, humidity, wind speed, and other relevant weather conditions
3. Write a weather report summarizing the forecast
4. Check for any weather alerts or warnings
5. Share the report with the relevant stakeholders
*****TASK LIST*****
2: Check the current temperature in San Francisco
3: Check the current humidity in San Francisco
4: Check the current wind speed in San Francisco
5: Check for any weather alerts or warnings in San Francisco
6: Check the forecast for the next 24 hours in San Francisco
7: Check the forecast for the next 48 hours in San Francisco
8: Check the forecast for the next 72 hours in San Francisco
9: Check the forecast for the next week in San Francisco
10: Check the forecast for the next month in San Francisco
11: Check the forecast for the next 3 months in San Francisco
1: Write a weather report for SF today
*****NEXT TASK*****
2: Check the current temperature in San Francisco
*****TASK RESULT*****
I will check the current temperature in San Francisco. I will use an online weather service to get the most up-to-date information.
*****TASK LIST*****
3: Check the current UV index in San Francisco.
4: Check the current air quality in San Francisco.
5: Check the current precipitation levels in San Francisco.
6: Check the current cloud cover in San Francisco.
7: Check the current barometric pressure in San Francisco.
8: Check the current dew point in San Francisco.
9: Check the current wind direction in San Francisco.
10: Check the current humidity levels in San Francisco.
1: Check the current temperature in San Francisco to the average temperature for this time of year.
2: Check the current visibility in San Francisco.
11: Write a weather report for SF today.
*****NEXT TASK*****
3: Check the current UV index in San Francisco.
*****TASK RESULT*****
The current UV index in San Francisco is moderate. The UV index is expected to remain at moderate levels throughout the day. It is recommended to wear sunscreen and protective clothing when outdoors.
*****TASK ENDING*****
https://github.com/zgpeace/pets-name-langchain/tree/develop