LangChain 27 BabyAGI编写旧金山的天气预报

news2024/11/23 11:50:32

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
  22. LangChain 22 LangServe用于一键部署LangChain应用程序
  23. LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
  24. LangChain 24 对本地文档的搜索RAG检索增强生成Retrieval-augmented generation
  25. LangChain 25: SQL Agent通过自然语言查询数据库sqlite
  26. LangChain 26: 回调函数callbacks打印prompt verbose调用
  27. LangChain 27 AI Agents角色扮演多轮对话解决问题CAMEL

1. Agents

Agents的核心思想是使用语言模型选择一系列需要采取的行动。在链式结构中,一系列的行动是硬编码的(在代码中)。在Agents中,语言模型被用作推理引擎,以确定需要采取哪些行动,以及采取这些行动的顺序。

这是负责决定下一步该采取什么行动的链条。这是由语言模型和提示驱动的。这个链条的输入包括:

  1. Tools工具:可用工具的描述
  2. User input用户输入:高层目标
  3. Intermediate steps中间步骤:为了实现用户输入而先前执行的任何(action动作,tool output工具输出)对

输出是下一步要采取的行动或发送给用户的最终响应(AgentActions或AgentFinish)。一个行动指定一个工具和该工具的输入。

不同的代理有不同的推理提示风格,不同的编码输入方式以及不同的解析输出方式。有关内置代理的完整列表,请参见代理类型。您还可以轻松构建自定义代理,我们将在下面的入门部分中展示如何做到这一点。

2. BabyAGI

BabyAGI这个 Python 脚本是一个使用人工智能技术的任务管理系统的示例。该系统使用 OpenAI 和矢量数据库,比如 Chroma 或 Weaviate,来创建、排序和执行任务。这个系统的主要思想是根据先前任务的结果和预定义的目标来创建任务。然后,脚本利用 OpenAI 的自然语言处理(NLP)能力根据目标创建新任务,并利用 Chroma/Weaviate 来存储和检索任务结果以获取上下文信息。这是原始任务驱动自主代理的简化版本。

2.1 它是如何工作的

该脚本通过运行一个无限循环来完成以下步骤:

  1. 从任务列表中获取第一个任务。
  2. 将任务发送给执行代理,该代理使用OpenAI的API根据上下文完成任务。
  3. 丰富结果并将其存储在Chroma/Weaviate中。
  4. 根据目标和先前任务的结果创建新任务并重新设置任务列表的优先级。
    在这里插入图片描述
    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 Optional

from 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 faiss

embedding_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

别小看Python的【print】函数,这些高级用法你知道吗?

文章目录 引言技巧1:格式化输出示例1:使用%s来插入字符串,使用%d来插入整数示例2:使用字符串的format()方法示例3:使用f-string格式化输出 技巧2:控制输出文本的颜色技巧3:将打印结果重定向至文…

什么是Maven?

什么是Maven 1、Maven是依赖管理、项目构建工具。 pom.xml springBoot项目的核心配置文件,pom项目对象模型、Dependency依赖管理模型。 Maven中的GAVP是指: 1、GroupId:当前工程组织id,例如:com.jd.tddl 2、ArtifactI…

Redis-对象

参考资料 极客时间Redis(亚风) Redis对象 String • 基本编码⽅式是RAW,基于简单动态字符串(SDS)实现,存储上限为512mb。 • 如果存储的SDS⻓度⼩于44字节,则会采⽤EMBSTR编码,此…

QT:Unable to create a debugging engine.

debug跑不了: 报错:Unable to create a debugging engine. 参考: https://blog.csdn.net/u010906468/article/details/104716198 先检查是否安装了DEBUG插件 工具-》》选项 查看插件,如果没有的话,需要重新安装qt时…

计算机操作系统-第十七天

目录 处理机调度 调度的基本概念 作业 高级调度(作业调度) 中级调度(内存调度) 低级调度(进程调度/处理机调度) 进程的挂起态与七状态模型 挂起和阻塞的区别 三层调度的联系和对比 本节思维导图…

SDN控制器-ONOS中的最终一致性存储

ONOS中的数据存储基本上都是以KV进行存储的。按照一致性强弱类型可以分为强一致性存储(strong consistency)与弱一致性存储(eventually consistency)。 比较典型的,如ONOS中对于设备接口的存储,使用的是强…

XXE漏洞 [NCTF2019]Fake XML cookbook1

打开题目 查看源代码 发现我们post传入的数据都被放到了doLogin.php下面 访问一下看看 提示加载外部xml实体 bp抓包一下看看 得到flag 或者这样 但是很明显这样是不行的,因为资源是在admin上,也就是用户名那里 PHP引用外部实体,常见的利用…

【23-24 秋学期】NNDL 作业11 LSTM

目录 习题6-4 推导LSTM网络中参数的梯度, 并分析其避免梯度消失的效果 习题6-3P 编程实现下图LSTM运行过程 (一)numpy实现 (二)使用nn.LSTMCell实现 (三) 使用nn.LSTM实现 总结 &#x…

PMI相关证书的获取步骤及注意内容

近几年很多行业的从业人员都在考取PMI项目管理相关证书,可在中国大陆地区参加考试的认证主要有:PMP, PgMP, PMI-RMP, PMI-ACP, PMI-PBA, CAPM。PfMP, PMI-SP尚未在中国大陆地区开放考试。 现整理该类证书的相关获取步骤及注意内容 一、证书获取步骤 S…

动态规划(Dynamic Programming)

动态规划(Dynamic Programming):是运筹学的一种最优化方法,只不过在计算机问题上应用比较多 DP常见步骤: 暴力递归/穷举记忆化搜索(傻缓存 递归),使用备忘录/ DP Table 来优化穷举过程严格表结…

锁--07_2---- index merge(索引合并)引起的死锁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 案例分析生产背景死锁日志表结构执行计划 EXPLAN为什么会用 index_merge(索引合并)为什么用了 index_merge就死锁了解决方案注:M…

SQL基础:操作环境搭建

在上一节中,我们简单讲述了数据库和SQL的基本概念。 本节我们讲述一下环境搭建,为下一节讲表的基本操作做下铺垫。 环境搭建 具体到操作,我们就要准备一些环境了。如果不进行练习,我们学习的知识将很快被遗忘。 MySQL安装&…

如何使用Lychee结合内网穿透搭建本地私人图床网站并实现远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

四舍五入浮点数

1.题目如下: 2.方法一: 直接取出小数部分第一位来判断。 1. 先乘以10。 2. 强制类型转换为整型,去掉小数部分。 3. 再模10,相当于取出原数的小数第一位。 代码实现: int way1(double n) {int a (int)(n * 10);int b…

kafka学习笔记--Kafka副本

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

一些关于fMRI脑数据的预处理工具

一些关于fMRI脑数据的预处理工具 前言概述SPM12工具箱FSL工具箱FreeSurfer工具箱BrainNet Viewer工具箱circularGraph工具箱Nipype集成框架fMRIPrep集成框架参考文献 前言 March 25, 2022 这里是关于fMRI脑数据的预处理工具的相关调研 主要是关于数据的预处理,数据…

万兆网络之屏蔽线序接法(中)

在介绍优质网线选购之前,先简单介绍一下水晶头 1毛钱一颗跟1元一颗的水晶头,往往是金手指厚度差别,你可以想象压制的时候可能会有什么情况 另外,一些3元一颗的镀金水晶头会有15U、30U之类的是电镀厚度单位,数值越大镀…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第四次作业

云数据库研究 云计算与云数据库背景 云计算(cloud computing)是 IT 技术发展的最新趋势,正受到业界和学术界的广泛关注。云计算是在分布式处理、并行处理和网格计算等技术的基础上发展起来的,是一种新兴的共享基础架构的方法。它…

java内置的数据结构

Java语言提供了许多内置的数据结构,包括: 1. 数组(Array):数组是最基本的数据结构之一,它是一个有序的元素集合,每个元素都有一个对应的索引。在Java中,数组可以通过声明和初始化来创…

2023年金属非金属矿山(地下矿山)安全管理人员证模拟考试题库及金属非金属矿山(地下矿山)安全管理人员理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年金属非金属矿山(地下矿山)安全管理人员证模拟考试题库及金属非金属矿山(地下矿山)安全管理人员理论考试试题是由安全生产模拟考试一点通提供,金属非金…