LangChain学习文档
- 基础
- 【LangChain】LLM
概述
LLMChain
是一个简单的链,它围绕语言模型添加了一些功能。它在整个LangChain
中广泛使用,包括在其他链和代理中。LLMChain
由 PromptTemplate
和语言模型(LLM 或聊天模型)
组成。它使用提供的输入键值对(以及内存键值对,如果可用的话)作用于格式化提示模板,并将格式化后的字符串传递给 LLM
并返回 LLM
输出。
内容
from langchain import PromptTemplate, OpenAI, LLMChain
# 提示模板
prompt_template = "What is a good name for a company that makes {product}?"
llm = OpenAI(temperature=0)
llm_chain = LLMChain(
llm=llm,
prompt=PromptTemplate.from_template(prompt_template)
)
llm_chain("colorful socks")
结果:
{'product': 'colorful socks', 'text': '\n\nSocktastic!'}
运行 LLM Chain 的其他方式
除了所有 Chain 对象共享的 __call__
和 run
方法之外,LLMChain
还提供了几种调用链逻辑的方法:
apply
允许您针对输入列表运行链:
input_list = [
{"product": "socks"},
{"product": "computer"},
{"product": "shoes"}
]
llm_chain.apply(input_list)
结果如下:
[{'text': '\n\nSocktastic!'},
{'text': '\n\nTechCore Solutions.'},
{'text': '\n\nFootwear Factory.'}]
generate
generate 与 apply 类似,只是它返回一个 LLMResult 而不是字符串。 LLMResult
通常包含有用的生成,例如token
使用情况和完成原因。
llm_chain.generate(input_list)
结果:
LLMResult(
generations=[
[Generation(text='\n\nSocktastic!', generation_info={'finish_reason': 'stop', 'logprobs': None})],
[Generation(text='\n\nTechCore Solutions.', generation_info={'finish_reason': 'stop', 'logprobs': None})],
[Generation(text='\n\nFootwear Factory.', generation_info={'finish_reason': 'stop', 'logprobs': None})]],
llm_output={'token_usage': {'prompt_tokens': 36, 'total_tokens': 55, 'completion_tokens': 19}, 'model_name': 'text-davinci-003'})
predict
Predict
与 run
方法类似,只不过输入参数不再是Python字典,而是关键字参数。
# Single input example
llm_chain.predict(product="colorful socks")
# 结果
'\n\nSocktastic!'
# Multiple inputs example
# 多个输入的例子:
template = """Tell me a {adjective} joke about {subject}."""
prompt = PromptTemplate(template=template, input_variables=["adjective", "subject"])
llm_chain = LLMChain(prompt=prompt, llm=OpenAI(temperature=0))
llm_chain.predict(adjective="sad", subject="ducks")
结果:
'\n\nQ: What did the duck say when his friend died?\nA: Quack, quack, goodbye.'
解析输出(Parsing the outputs)
默认情况下,LLMChain
不会解析输出,即使底层提示对象具有输出解析器。如果您想在LLM
输出上应用该输出解析器,请使用predict_and_parse
而不是predict
,使用apply_and_parse
而不是apply
。
predict
的例子:
from langchain.output_parsers import CommaSeparatedListOutputParser
output_parser = CommaSeparatedListOutputParser()
template = """List all the colors in a rainbow"""
prompt = PromptTemplate(template=template, input_variables=[], output_parser=output_parser)
llm_chain = LLMChain(prompt=prompt, llm=llm)
llm_chain.predict()
结果:
'\n\nRed, orange, yellow, green, blue, indigo, violet'
predict_and_parser
的例子:
llm_chain.predict_and_parse()
结果:
['Red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']
从字符串中初始化
您还可以直接从字符串模板构造LLMChain。
template = """Tell me a {adjective} joke about {subject}."""
llm_chain = LLMChain.from_string(llm=llm, template=template)
llm_chain.predict(adjective="sad", subject="ducks")
结果:
'\n\nQ: What did the duck say when his friend died?\nA: Quack, quack, goodbye.'
总结
本文主要讲述如何构建LLMChain
,由:LLM和Prompt两个部分组成。
- 运行LLMChain的方法有:
方法名 | 描述 |
---|---|
run | 只打印一个key的value |
apply | 输入允许传入List |
generate | 与 apply 类似,只是它返回一个 LLMResult 而不是字符串。通常包含:token使用和完成情况 |
Predict | 与 run 方法类似,只不过输入键被指定为关键字参数而不是 Python 字典。 |
- 解析输出
将 apply()
改为 apply_and_parse()
将 predict()
改为 predict_and_parse()
- 直接用字符串初始化LLMChain,不用
PromptTemplate(xxx)
template = """Tell me a {adjective} joke about {subject}."""
llm_chain = LLMChain.from_string(llm=llm, template=template)
参考地址:文章来源:https://www.toymoban.com/news/detail-540599.html
https://python.langchain.com/docs/modules/chains/foundational/llm_chain文章来源地址https://www.toymoban.com/news/detail-540599.html
到了这里,关于【LangChain】LLM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!