LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息

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
  28. LangChain 28 BabyAGI编写旧金山的天气预报
  29. LangChain 29 调试Debugging 详细信息verbose
    在这里插入图片描述

1. 动手用LangChain

LangChain提供许多模块,可用于构建语言模型应用程序。模块可以作为简单应用程序中的独立模块使用,并且它们可以组合用于更复杂的用例。组合由LangChain表达语言LangChain Expression Language(LCEL)提供支持,它定义了许多模块实现的统一可运行接口,从而使得能够无缝地链接组件成为可能。

最简单和最常见的链包含三个要素:

  • LLM/Chat Model:语言模型在这里是核心推理引擎。为了使用LangChain,您需要了解不同类型的语言模型以及如何与它们一起工作。
  • Prompt Template提示模板:这提供了对语言模型的指令。这控制着语言模型的输出,因此理解如何构建提示和不同的提示策略至关重要。
  • Output Parser输出解析器:这些将语言模型的原始响应转换为更易处理的格式,使得可以轻松地在下游使用输出。

在本指南中,我们将分别介绍这三个组件,然后讨论如何将它们组合在一起。了解这些概念将为您使用和定制LangChain应用程序奠定良好基础。大多数LangChain应用程序允许您配置模型和/或提示,因此知道如何利用这一点将是一个重要的促进因素。

2. LLM / Chat Model

有两种类型的语言模型:

  • LLM:基础模型将字符串作为输入并返回字符串
  • ChatModel:基础模型将消息列表作为输入并返回消息

字符串很简单,但是消息究竟是什么?基本消息接口由BaseMessage定义,其中有两个必需属性:

  • content:消息的内容。通常是字符串。
  • role:来自BaseMessage的实体。

LangChain提供了几个对象,以便轻松区分不同的角色:

  • HumanMessage:来自人类/用户的BaseMessage。
  • AIMessage:来自AI /助手的BaseMessage。
  • SystemMessage:来自系统的BaseMessage。
  • FunctionMessage / ToolMessage:包含函数或工具调用输出的BaseMessage。

如果没有这些角色中的任何一个听起来合适,还有一个ChatMessage类,您可以在其中手动指定角色。

LangChain提供了一个通用接口,被LLM和ChatModel共享。然而,要最有效地构建给定语言模型的提示,了解它们之间的区别是很有用的。

调用LLM或ChatModel的最简单方法是使用.invoke(),这是LangChain表达语言(LCEL)对象的通用同步调用方法:

  • LLM.invoke:接受一个字符串,返回一个字符串。
  • ChatModel.invoke:接受一个BaseMessage列表,返回一个BaseMessage。

这些方法的输入类型实际上比这更一般化,但为了简单起见,我们可以假设LLMs只接受字符串,而Chat模型只接受消息列表。请查看下面的“深入了解”部分,了解有关模型调用的更多信息。

让我们看看如何处理这些不同类型的模型和这些不同类型的输入。首先,让我们导入一个LLM和一个ChatModel。

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI#llm = OpenAI()
#chat_model = ChatOpenAI()llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0)
chat_model = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

LLM和ChatModel对象实际上是配置对象。您可以使用温度等参数对它们进行初始化,并将它们传递给其他地方。

from langchain.schema import HumanMessagetext = "制造彩色袜子的公司取什么好名字呢?"
messages = [HumanMessage(content=text)]response = llm.invoke(text)
print("string >>", response)
# >> Feetful of Funresponse =  chat_model.invoke(messages)
print("message >>", response)
# >> AIMessage(content="Socks O'Color")

输出

[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ✗)]$ python Basic/chat_msg.py    
string >> 1. 彩虹袜子公司
2. 绚丽袜子制造厂
3. 艳丽袜业有限公司
4. 缤纷袜子制造商
5. 魅力袜业集团
6. 彩绘袜子制造厂
7. 七彩袜子有限公司
8. 色彩世界袜业
9. 炫彩袜子制造商
10. 色彩缤纷袜业公司message >> content='1. 彩虹袜子公司\n2. 绚丽袜子制造厂\n3. 艳丽袜业有限公司\n4. 缤纷袜子制造商\n5. 魅力袜业集团\n6. 彩绘袜子制造厂\n7. 时尚彩袜有限公司\n8. 色彩世界袜业\n9. 炫彩袜子制造商\n10. 梦幻袜子公司'

LLM.invokeChatModel.invoke实际上都支持Union[str, List[BaseMessage], PromptValue]作为输入。PromptValue是一个定义了自己的返回输入的自定义逻辑的对象,可以将其输入作为字符串或消息。LLMs有逻辑将这些中的任何一个强制转换为字符串,而ChatModels有逻辑将这些中的任何一个强制转换为消息。LLM和ChatModel接受相同的输入意味着你可以在大多数链中直接交换它们,而不会破坏任何东西,尽管重要的是要考虑输入是如何被强制转换以及这可能会影响模型性能。要深入了解模型,请前往语言模型部分。

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/get_started/quickstart

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 年 22 款顶级免费数据恢复软件比较 [Windows 和 Mac]

适用于 Windows 和 Mac 用户的最佳数据恢复软件下载列表和比较,可快速恢复丢失的数据、已删除的文件、照片或格式化的分区数据: 数据恢复软件是一种从任何存储介质恢复丢失文件的应用程序。它可以恢复由于病毒攻击、硬盘故障或任何其他原因而意外删除或…

TCGA超过1G的病理wsi数据下载-gdc-client

使用网页端下载TCGA超过1G的病理wsi数据,数据下载到1G后就不能完整下载。遂采用gdc-client下载。 Win 环境下新建这个文件夹放在系统盘进行储存,否则会报错:ERROR: Unable to write state file: [WinError 17] 系统无法将文件移到不同的磁盘…

【docker笔记】docker理论及安装

前言 本笔记来源于尚硅谷docker教学视频 视频地址:https://www.bilibili.com/video/BV1gr4y1U7CY/?spm_id_from333.337.search-card.all.click 纯手打笔记,来之不易,感谢支持~ Docker简介 docker为什么会出现 想象一下:一个应用…

leetcode 268. 丢失的数字(优质解法)

链接&#xff1a;268. 丢失的数字 代码: class Solution {public int missingNumber(int[] nums) {int result0;for(int i0;i<nums.length;i){result^i;}for(int i0;i<nums.length;i){result^nums[i];}return result;} } 题解&#xff1a; 本题是比较简单的题&#xff…

要参加微软官方 Copilot 智能编程训练营了

GitHub Copilot 是由 GitHub、OpenAI 和 Microsoft 联合开发的生成式 AI 模型驱动的。 GitHub Copilot 分析用户正在编辑的文件及相关文件的上下文&#xff0c;并在编写代码时提供自动补全式的建议。 刚好下周要参加微软官方组织的 GitHub Copilot 工作坊-智能编程训练营&…

向量投影:如何将一个向量投影到矩阵的行向量生成子空间?

向量投影&#xff1a;如何将一个向量投影到矩阵的行向量生成子空间&#xff1f; 前言 本问题是在学习Rosen梯度投影优化方法的时候遇到的问题&#xff0c;主要是对于正交投影矩阵(NT(NNT)-1N)的不理解&#xff0c;因此经过查阅资料&#xff0c;学习了关于向量投影的知识&…

DLLNotFoundException:xxx tolua... 错误打印

DLLNotFoundException:xxx tolua... 错误打印 一、DLLNotFoundException介绍二、Plugins文件夹文件目录结构如下&#xff1a; 三、Plugins中的Android文件夹四、Plugins中的IOS文件夹这里不说了没测试过不过原理应该也是选择对应的平台即可五、Plugins中的x86和X86_64文件夹 一…

git入门指南:新手快速上手git(Linux环境如何使用git)

目录 前言 1. 什么是git&#xff1f; 2. git版本控制器 3. git在Linux中的使用 安装git 4. git三板斧 第一招&#xff1a;add 第二招&#xff1a;commit 第三招&#xff1a;push 5. 执行状态 6. 删除 总结 前言 Linux的基本开发工具介绍完毕&#xff0c;接下来介绍一…

UnityHub无法打开项目问题,打开项目闪退回到hub界面

UnityHub无法打开项目问题&#xff0c;打开项目闪退回到hub界面 UnityHub启动项目闪烁unity界面之后立刻闪退到UnityHub界面情况一&#xff1a;这里这个问题我遇到了很多次情况都不太一样&#xff0c;我先说下我遇到的第一种问题也就是最好解决的一种。许可证到期导致闪退 情况…

A Philosophy of Software Design 学习笔记

前言 高耦合&#xff0c;低内聚&#xff0c;降低复杂度&#xff1a;在软件迭代中&#xff0c;不关注软件系统结构&#xff0c;导致软件复杂度累加&#xff0c;软件缺乏系统设计&#xff0c;模块混乱&#xff0c;一旦需求增加、修改或者优化&#xff0c;改变的代价无法评估&…

OpenSource - SCM服务管理平台

文章目录 官方网址文档下载版本功能解决了哪些问题使用对象优势Linxu版本scm-dev deb服务列表 Windows版本scm-dev 服务列表scm-all 服务列表scm-jdk 服务列表scm-springboot 精简版本服务列表scm-springboot 服务列表scm-tomcat 服务列表 SCM 截图 官方网址 https://scm.chus…

SpringIOC之AbstractMessageSource

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…