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
- LangChain 28 BabyAGI编写旧金山的天气预报
- LangChain 29 调试Debugging 详细信息verbose
- LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息
- LangChain 31 模块复用Prompt templates 提示词模板
- LangChain 32 输出解析器Output parsers
1. LangChain表达语言LangChain Expression Language (LCEL)
现在我们可以把所有这些组合成一个链条。这个链条将接受输入变量,将其传递给提示模板以创建提示,将提示传递给语言模型,然后通过一个(可选的)输出解析器传递输出。这是一种方便的方式来捆绑一个模块化的逻辑片段。让我们看看它的实际效果!
from typing import Listfrom langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema import BaseOutputParser
from dotenv import load_dotenv load_dotenv() class CommaSeparatedListOutputParser(BaseOutputParser[List[str]]):"""Parse the output of an LLM call to a comma-separated list."""def parse(self, text: str) -> List[str]:"""Parse the output of an LLM call."""return text.strip().split(", ")template = """你是一个有帮助的助手,可以生成逗号分隔的列表。
用户将传入一个类别,你应该生成该类别中的5个对象的逗号分隔列表。
只返回逗号分隔的列表,不要其他内容。"""
human_template = "{text}"chat_prompt = ChatPromptTemplate.from_messages([("system", template),("human", human_template),
])
chain = chat_prompt | ChatOpenAI() | CommaSeparatedListOutputParser()
response = chain.invoke({"text": "颜色"})
print('colors >> ', response)
# >> ['red', 'blue', 'green', 'yellow', 'orange']
输出结果
[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ✗)]$ python Basic/chat_lcel.py 1 ↵──(Sun,Dec24)─┘
colors >> ['红色', '蓝色', '黄色', '绿色', '紫色']
请注意,我们正在使用 |
语法将这些组件连接在一起。这种 |
语法是由LangChain Expression Language (LCEL)提供支持的,并依赖于所有这些对象实现的通用Runnable接口。要了解有关LCEL的更多信息,请阅读此处的文档。
日志记录平台 Tracing with LangSmith
假设我们已经按照开头所示设置了环境变量,那么我们一直在进行的所有模型和链调用都将自动记录到LangSmith中。一旦在那里,我们就可以使用LangSmith来调试和注释我们的应用程序跟踪,然后将它们转换为数据集,以便评估应用程序未来迭代的情况。
看看上述链的跟踪会是什么样子:
请点击这里了解更多关于LangSmith的信息。
代码
https://github.com/zgpeace/pets-name-langchain/tree/develop
参考
https://python.langchain.com/docs/get_started/quickstart