LangChain系列文章
- LangChain 实现给动物取名字,
- LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
- LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
- LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
- LangChain 5易速鲜花内部问答系统
- LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
- LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
- LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
- LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
- LangChain 10思维链Chain of Thought一步一步的思考 think step by step
- LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
- LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
- LangChain 13输出解析Output Parsers 自动修复解析器
- LangChain 14 SequencialChain链接不同的组件
- LangChain 15根据问题自动路由Router Chain确定用户的意图
- LangChain 16 通过Memory记住历史对话的内容
- LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
- LangChain 18 LangSmith监控评估Agent并创建对应的数据库
- LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
- LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
- LangChain 21 Agents自问自答与搜索 Self-ask with search
- LangChain 22 LangServe用于一键部署LangChain应用程序
- LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
- LangChain 24 对本地文档的搜索RAG检索增强生成Retrieval-augmented generation
- LangChain 25: SQL Agent通过自然语言查询数据库sqlite
- LangChain 26: 回调函数callbacks打印prompt verbose调用
- LangChain 27 AI Agents角色扮演多轮对话解决问题CAMEL
1. Agents
Agents的核心思想是使用语言模型选择一系列需要采取的行动。在链式结构中,一系列的行动是硬编码的(在代码中)。在Agents中,语言模型被用作推理引擎,以确定需要采取哪些行动,以及采取这些行动的顺序。
这是负责决定下一步该采取什么行动的链条。这是由语言模型和提示驱动的。这个链条的输入包括:
- Tools工具:可用工具的描述
- User input用户输入:高层目标
- Intermediate steps中间步骤:为了实现用户输入而先前执行的任何(action动作,tool output工具输出)对
输出是下一步要采取的行动或发送给用户的最终响应(AgentActions或AgentFinish)。一个行动指定一个工具和该工具的输入。
不同的代理有不同的推理提示风格,不同的编码输入方式以及不同的解析输出方式。有关内置代理的完整列表,请参见代理类型。您还可以轻松构建自定义代理,我们将在下面的入门部分中展示如何做到这一点。
2. BabyAGI
BabyAGI这个 Python 脚本是一个使用人工智能技术的任务管理系统的示例。该系统使用 OpenAI 和矢量数据库,比如 Chroma 或 Weaviate,来创建、排序和执行任务。这个系统的主要思想是根据先前任务的结果和预定义的目标来创建任务。然后,脚本利用 OpenAI 的自然语言处理(NLP)能力根据目标创建新任务,并利用 Chroma/Weaviate 来存储和检索任务结果以获取上下文信息。这是原始任务驱动自主代理的简化版本。
2.1 它是如何工作的
该脚本通过运行一个无限循环来完成以下步骤:
- 从任务列表中获取第一个任务。
- 将任务发送给执行代理,该代理使用OpenAI的API根据上下文完成任务。
- 丰富结果并将其存储在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将任务的结果以及任务名称和任何附加元数据存储在集合中。
3. 代码实现 BabyAGI编写旧金山的天气预报
本指南将帮助您了解创建自己的递归代理的组件。
尽管 BabyAGI 使用特定的向量库/模型提供程序(Pinecone、OpenAI),但使用 LangChain 实现它的好处之一是您可以轻松地将它们换成不同的选项。在这个实现中,我们使用FAISS向量存储(因为它在本地运行并且是免费的)。
3.1 安装和导入所需的模块
from typing import Optionalfrom langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI
from langchain_experimental.autonomous_agents import BabyAGI
3.2 连接到 Vector Store
from langchain.docstore import InMemoryDocstore
from langchain.vectorstores import FAISS
# Define your embedding model
embeddings_model = OpenAIEmbeddings()
# Initialize the vectorstore as empty
import faissembedding_size = 1536
index = faiss.IndexFlatL2(embedding_size)
vectorstore = FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {})
3.3 现在是时候创建 BabyAGI 控制器并观察它尝试实现您的目标了。
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})
3.4 输出过程
*****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
参考
- https://github.com/yoheinakajima/babyagi/tree/main
- https://github.com/langchain-ai/langchain/blob/master/cookbook/baby_agi.ipynb