LangChain系列文章
现在我们可以把所有这些组合成一个链条。这个链条将接受输入变量,将其传递给提示模板以创建提示,将提示传递给语言模型,然后通过一个(可选的)输出解析器传递输出。这是一种方便的方式来捆绑一个模块化的逻辑片段。让我们看看它的实际效果!
from typing import List
from 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的更多信息,请阅读此处的文档。
假设我们已经按照开头所示设置了环境变量,那么我们一直在进行的所有模型和链调用都将自动记录到LangSmith中。一旦在那里,我们就可以使用LangSmith来调试和注释我们的应用程序跟踪,然后将它们转换为数据集,以便评估应用程序未来迭代的情况。
https://github.com/zgpeace/pets-name-langchain/tree/develop
https://python.langchain.com/docs/get_started/quickstart