LangChain系列文章
OutputParsers
将语言模型的原始输出转换为可以在下游使用的格式。OutputParsers
有几种主要类型,包括:
有关详细信息,请参阅输出解析器部分。
在这个入门指南中,我们将编写自己的输出解析器 - 将逗号分隔的列表转换为列表。
from langchain.schema import BaseOutputParser
class CommaSeparatedListOutputParser(BaseOutputParser):
"""Parse the output of an LLM call to a comma-separated list."""
def parse(self, text: str):
"""Parse the output of an LLM call."""
return text.strip().split(", ")
CommaSeparatedListOutputParser().parse("hi, bye")
# >> ['hi', 'bye']
完整的例子
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.schema import BaseOutputParser
from dotenv import load_dotenv
load_dotenv()
llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0)
chat_model = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
from langchain.schema import HumanMessage
text = "制造彩色袜子的公司取什么好名字呢?"
messages = [HumanMessage(content=text)]
response = llm.invoke(text)
print("string >>", response)
# >> Feetful of Fun
response = chat_model.invoke(messages)
print("message >>", response)
class NextLineSeparatedListOutputParser(BaseOutputParser):
"""Parse the output of an LLM call to a comma-separated list."""
def parse(self, text: str):
"""Parse the output of an LLM call."""
return text.strip().split("\n")
result = NextLineSeparatedListOutputParser().parse(response.content)
print('next line result >> ', result)
输出结果
[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ?)]$ python Basic/chat_msg_parse.py
string >> 1. 彩虹袜子公司
2. 绚丽袜子制造厂
3. 艳丽袜业有限公司
4. 缤纷袜子制造商
5. 魅力袜业集团
6. 彩绘袜子制造厂
7. 七彩袜子有限公司
8. 色彩世界袜业
9. 炫彩袜子制造商
10. 色彩缤纷袜业公司
message >> content='1. 彩虹袜子公司\n2. 绚丽袜子制造厂\n3. 艳丽袜业有限公司\n4. 缤纷袜子制造商\n5. 魅力袜业集团\n6. 彩绘袜子制造厂\n7. 时尚彩袜有限公司\n8. 色彩世界袜业\n9. 炫彩袜子制造商\n10. 梦幻袜子公司'
next line result >> ['1. 彩虹袜子公司', '2. 绚丽袜子制造厂', '3. 艳丽袜业有限公司', '4. 缤纷袜子制造商', '5. 魅力袜业集团', '6. 彩绘袜子制造厂', '7. 时尚彩袜有限公司', '8. 色彩世界袜业', '9. 炫彩袜子制造商', '10. 梦幻袜子公司']
https://github.com/zgpeace/pets-name-langchain/tree/develop
https://python.langchain.com/docs/get_started/quickstart