LangChain-AI应用开发框架(八)

张开发
2026/4/9 19:42:10 15 分钟阅读

分享文章

LangChain-AI应用开发框架(八)
目录一.提示词模板PromptTemplate1.概念2.用法a.字符串模板b.聊天消息模板c.消息占位符3.使用LangChain Hub的提示词模板二.少样本提示few-shotting1.概念2.实现少样本提示3.使用案例a.推理引导b.使用示例数据增强LangChain信息提取能力4.示例选择器Exampleselectorsa.按长度选择示例Lengthb.按语义相似性选择示例Similarityc.按最大边际相关性选择示例MMRd.通过ngram重叠选择示例Ngram一.提示词模板PromptTemplate1.概念2.用法a.字符串模板from langchain_core.prompts import PromptTemplate # 1. 定义模板 prompt_template PromptTemplate.from_template(Translate the following into {language}) # 2. 实例化模板 print(prompt_template.invoke({language: Chinese}))b.聊天消息模板from langchain_core.prompts import ChatPromptTemplate # 1. 设置模板 prompt_template ChatPromptTemplate( [ (system, Translate the following into {language}.), (user, {text}) ] ) # 说明: # 在 0.2.24 版本后可以直接使用ChatPromptTemplate()来初始化模板 # 在 0.2.24 版本前需要使用 ChatPromptTemplate.from_messages()来初始化模板 # 2. 实例化模板获取消息实例 messagesValue prompt_template.invoke( { language: Chinese, text: what is your name? } ) messages messagesValue.to_messages() print(messages)from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 定义大模型 model ChatOpenAI(modelgpt-4o-mini) # 1. 设置模板 prompt_template ChatPromptTemplate( [ (system, Translate the following into {language}.), (user, {text}) ] ) # 2. 实例化模板获取消息实例 messagesValue prompt_template.invoke( { language: Chinese, text: what is your name? } ) messages messagesValue.to_messages() print(messages) # 3. 输出解析 parser StrOutputParser() chain model | parser print(chain.invoke(messages))from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 定义大模型 model ChatOpenAI(modelgpt-4o-mini) # 1. 设置模板 prompt_template ChatPromptTemplate( [ (system, Translate the following into {language}.), (user, {text}) ] ) # 2. 定义输出解析器 parser StrOutputParser() # 3. 定义链 chain prompt_template | model | parser for token in chain.stream( { language: English, text: 你好我叫斯蒂芬很高兴认识你 } ): print(token, end|)c.消息占位符from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.messages import HumanMessage, AIMessage prompt_template ChatPromptTemplate([ (system, 你是⼀个聊天助⼿), MessagesPlaceholder(msgs) # 消息占位符 ]) messages_to_pass [ HumanMessage(content中国⾸都是哪⾥?), AIMessage(content中国⾸都是北京。), HumanMessage(content那法国呢?) ] formatted_prompt prompt_template.invoke({msgs: messages_to_pass}) print(formatted_prompt)from langchain_core.prompts import ChatPromptTemplate from langchain_core.messages import HumanMessage, AIMessage prompt_template ChatPromptTemplate( [ (system, You are a helpful assistant), (placeholder, {msgs}) ] ) messages_to_pass [ HumanMessage(content中国首都是哪里?), AIMessage(content中国首都是北京。), HumanMessage(content那法国呢?) ] formatted_prompt prompt_template.invoke({msgs: messages_to_pass}) print(formatted_prompt)3.使用LangChain Hub的提示词模板官网地址:https://smith.langchain.com/hub/提示词模板:https://smith.langchain.com/hub/hardkothari/prompt-maker?organizationIdd0dd56cf-2a93-4a39-88d7-7679b9ee0558from langchain_openai import ChatOpenAI from langsmith import Client # 从 hub 拉取 hardkothari/prompt-maker 提示词模板。 client Client() prompt client.pull_prompt(hardkothari/prompt-maker, include_modelTrue) # 定义模型 model ChatOpenAI(modelgpt-4o-mini) # 定义链 chain prompt | model while True: task input(\n你的任务是什么输入 quit 退出聊天\n) if task quit: break lazy_prompt input(\n你当前的提示是什么输入 quit 退出聊天\n) if lazy_prompt quit: break print(\nResponse:) chain.invoke({lazy_prompt: lazy_prompt, task: task}).pretty_print()我们就能够通过我们给的较少提示词,然后映入一个接口生成更完整的提示词二.少样本提示few-shotting1.概念2.实现少样本提示from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate import os from langchain_openai import ChatOpenAI # 强制关闭 LangSmith os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] os.environ[LANGCHAIN_API_KEY] api_key os.getenv(ZHIPU_API_KEY) model ChatOpenAI( modelglm-5, base_urlhttps://open.bigmodel.cn/api/paas/v4/, api_keyapi_key, timeout30, ) # 案例参数 examples [ {text: hi, what is your name?, output: 你好你叫什么名字}, {text: hi, what is your age?, output: 你好你多大了}, ] # 与案例关联的聊天消息模板 examples_prompt_template ChatPromptTemplate( [ (user, {text}), (ai, {output}), ] ) # 将案例转换为 消息列表插入到提示词模板中去 # 少样本提示词模板 few_shot_prompt FewShotChatMessagePromptTemplate( examplesexamples, example_promptexamples_prompt_template ) # 最终提示词模板 chat_prompt_template ChatPromptTemplate( [ (system, 将文本从{language_from}翻译为{language_to}), # 示例 few_shot_prompt, (user, {text}), ] ) #messages[ # SystemMessage(content将文本从英文翻译为中文, additional_kwargs{}, response_metadata{}), # HumanMessage(contenthi, what is your name?, additional_kwargs{}, response_metadata{}), # AIMessage(content你好你叫什么名字, additional_kwargs{}, response_metadata{}), # HumanMessage(contenthi, what is your age?, additional_kwargs{}, response_metadata{}), # AIMessage(content你好你多大了, additional_kwargs{}, response_metadata{}), # HumanMessage(contenthi,what is your favorite food?, additional_kwargs{}, response_metadata{}) #] # print(chat_prompt_template.invoke({ # language_from: 英文, # language_to: 中文, # text: hi,what is your favorite food?, # })) chain chat_prompt_template | model chain.invoke( { language_from: 英文, language_to: 中文, text: hi,what is your favorite food?, } ).pretty_print()3.使用案例a.推理引导from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate from langchain_openai import * import os os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] os.environ[LANGCHAIN_API_KEY] api_key os.getenv(ZHIPU_API_KEY) model ChatOpenAI( modelglm-5, base_urlhttps://open.bigmodel.cn/api/paas/v4/, api_keyapi_key, timeout30, ) #文本提示词模板 example_prompt PromptTemplate.from_template(Question: {question}\n{answer}) # 创建⽰例集 examples [ { question: 李⽩和杜甫谁更⻓寿, answer: 是否需要后续问题是的。 后续问题李⽩享年多少岁 中间答案李⽩享年61岁。 后续问题杜甫享年多少岁 中间答案杜甫享年58岁。 所以最终答案是李⽩ }, { question: 腾讯的创始⼈什么时候出⽣, answer: 是否需要后续问题是的。 后续问题腾讯的创始⼈是谁 中间答案腾讯由⻢化腾创⽴。 后续问题⻢化腾什么时候出⽣ 中间答案⻢化腾出⽣于1971年10⽉29⽇。 所以最终答案是1971年10⽉29⽇ , }, { question: 孙中⼭的外祖⽗是谁, answer: 是否需要后续问题是的。 后续问题孙中⼭的⺟亲是谁 中间答案孙中⼭的⺟亲是杨太夫⼈。 后续问题杨太夫⼈的⽗亲是谁 中间答案杨太夫⼈的⽗亲是杨胜辉。 所以最终答案是杨胜辉 , }, { question: 电影《红⾼粱》和《霸王别姬》的导演来⾃同⼀个国家吗, answer: 是否需要后续问题是的。 后续问题《红⾼粱》的导演是谁 中间答案《红⾼粱》的导演是张艺谋。 后续问题张艺来⾃哪⾥ 中间答案中国。 后续问题《霸王别姬》的导演是谁 中间答案《霸王别姬》的导演是陈凯歌。 后续问题陈凯歌来⾃哪⾥ 中间答案中国。 所以最终答案是是 , }, ] # 消息通过提示词模板构建出来 few_shot_prompt FewShotPromptTemplate( examplesexamples, example_promptexample_prompt,#用于格式化单个实例 suffixQuestion: {input}, #suffix表示放在实列之后的模板字符串 input_variables[input], #输入变量列表 ) # print(few_shot_prompt.invoke({input: 教父 和 星球大战 的导演是否来自一个国家}).to_string()) # print(few_shot_prompt.invoke({input: 教父 和 星球大战 的导演是否来自一个国家}).to_messages()) chain few_shot_prompt | model chain.invoke({input: 教父 和 星球大战 的导演是否来自一个国家}).pretty_print()b.使用示例数据增强LangChain信息提取能力from langchain_core.messages import HumanMessage, SystemMessage from langchain_openai import ChatOpenAI from pydantic import BaseModel, Field from typing import Optional, List import os # 定义大模型 os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] os.environ[LANGCHAIN_API_KEY] api_key os.getenv(ZHIPU_API_KEY) model ChatOpenAI( modelglm-4, base_urlhttps://open.bigmodel.cn/api/paas/v4/, api_keyapi_key, ) class Person(BaseModel): 一个人的信息。 # 注意: # 1. 每个字段都是 Optional 可选的 — 允许 LLM 在不知道答案时输出 None。 # 2. 每个字段都有一个 description 描述 — LLM使用这个描述。 # 有一个好的描述可以帮助提高提取结果。 name: Optional[str] Field(defaultNone, description这个人的名字) hair_color: Optional[str] Field(defaultNone, description如果知道这个人头发的颜色) skin_color: Optional[str] Field(defaultNone, description如果知道这个人的肤色) height_in_meters: Optional[str] Field(defaultNone, description以米为单位的高度) class Data(BaseModel): 人员列表数据 people: List[Person] Field(description人员列表) structured_model model.with_structured_output(schemaData,methodjson_mode) messages [ SystemMessage(content 必须严格返回JSON格式 {people: [{name:,hair_color:,skin_color:,height_in_meters:}]} 不要返回其他任何内容 ), HumanMessage(content篮球场上身高两米的中锋王伟一米七的后卫李明。) ] result structured_model.invoke(messages) print(result)我们可以通过示例加强信息提取的准确度from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.utils.function_calling import tool_example_to_messages from langchain_openai import ChatOpenAI from pydantic import BaseModel, Field from typing import Optional, List import os # 定义大模型 os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] os.environ[LANGCHAIN_API_KEY] api_key os.getenv(ZHIPU_API_KEY) model ChatOpenAI( modelglm-4, base_urlhttps://open.bigmodel.cn/api/paas/v4/, api_keyapi_key, ) class Person(BaseModel): 一个人的信息。 # 注意: # 1. 每个字段都是 Optional 可选的 — 允许 LLM 在不知道答案时输出 None。 # 2. 每个字段都有一个 description 描述 — LLM使用这个描述。 # 有一个好的描述可以帮助提高提取结果。 name: Optional[str] Field(defaultNone, description这个人的名字) hair_color: Optional[str] Field(defaultNone, description如果知道这个人头发的颜色) skin_color: Optional[str] Field(defaultNone, description如果知道这个人的肤色) height_in_meters: Optional[str] Field(defaultNone, description以米为单位的高度) class Data(BaseModel): 人员列表数据 people: List[Person] Field(description人员列表) #示例 examples [ ( 海洋是广阔的,蓝色的.它有两万多英尺, Data(people[]) ), ( 小明在跳舞,1米78的身高看起来很灵活, Data(people[ Person(name小明,hair_colorNone,skin_colorNone,height_in_meters1.78), ]) ), ] #定义提示词模板 prompt_template ChatPromptTemplate( [ SystemMessage(content 必须严格返回JSON格式 {people: [{name:,hair_color:,skin_color:,height_in_meters:}]} 不要返回其他任何内容 ), MessagesPlaceholder(example_messages), (user,{new_message}) ] ) #将示例转化为Messages example_messages [] for txt,tool_call in examples: if tool_call.people: ai_response 检测到人 else: ai_response 未检测到人 example_messages.extend(tool_example_to_messages( txt,#示例的输入 [tool_call], #工具(Data(people[])) ai_responseai_response,#让LLM强制返回ai_response )) print(example_messages) #[ # HumanMessage(content海洋是广阔的,蓝色的.它有两万多英尺, additional_kwargs{}, response_metadata{}), # AIMessage(content, additional_kwargs{tool_calls: [{id: 8a02eca2-16c3-4295-bbb5-e5286a9eb597, type: function, function: {name: Data, arguments: {people:[]}}}]}, response_metadata{}, tool_calls[{name: Data, args: {people: []}, id: 8a02eca2-16c3-4295-bbb5-e5286a9eb597, type: tool_call}]), # ToolMessage(contentYou have correctly called this tool., tool_call_id8a02eca2-16c3-4295-bbb5-e5286a9eb597), # AIMessage(content未检测到人, additional_kwargs{}, response_metadata{}), # HumanMessage(content小明在跳舞,1米78的身高看起来很灵活, additional_kwargs{}, response_metadata{}), # AIMessage(content, additional_kwargs{tool_calls: [{id: 033ed3f3-2380-43d3-b5b9-8ee074022831, type: function, function: {name: Data, arguments: {people:[{name:小明,hair_color:null,skin_color:null,height_in_meters:1.78}]}}}]}, response_metadata{}, tool_calls[{name: Data, args: {people: [{name: 小明, hair_color: None, skin_color: None, height_in_meters: 1.78}]}, id: 033ed3f3-2380-43d3-b5b9-8ee074022831, type: tool_call}]), # ToolMessage(contentYou have correctly called this tool., tool_call_id033ed3f3-2380-43d3-b5b9-8ee074022831), # AIMessage(content检测到人, additional_kwargs{}, response_metadata{}) # ]from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.utils.function_calling import tool_example_to_messages from langchain_openai import ChatOpenAI from pydantic import BaseModel, Field from typing import Optional, List import os # 定义大模型 os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] os.environ[LANGCHAIN_API_KEY] api_key os.getenv(ZHIPU_API_KEY) model ChatOpenAI( modelglm-4, base_urlhttps://open.bigmodel.cn/api/paas/v4/, api_keyapi_key, ) class Person(BaseModel): 一个人的信息。 # 注意: # 1. 每个字段都是 Optional 可选的 — 允许 LLM 在不知道答案时输出 None。 # 2. 每个字段都有一个 description 描述 — LLM使用这个描述。 # 有一个好的描述可以帮助提高提取结果。 name: Optional[str] Field(defaultNone, description这个人的名字) hair_color: Optional[str] Field(defaultNone, description如果知道这个人头发的颜色) skin_color: Optional[str] Field(defaultNone, description如果知道这个人的肤色) height_in_meters: Optional[str] Field(defaultNone, description以米为单位的高度) class Data(BaseModel): 人员列表数据 people: List[Person] Field(description人员列表) #示例 examples [ ( 海洋是广阔的,蓝色的.它有两万多英尺, Data(people[]) ), ( 小明在跳舞,1米78的身高看起来很灵活, Data(people[ Person(name小明,hair_colorNone,skin_colorNone,height_in_meters1.78), ]) ), ] #定义提示词模板 prompt_template ChatPromptTemplate( [ SystemMessage(content 你是数据提取专家 ), MessagesPlaceholder(example_messages), (user,{new_message}) ] ) #将示例转化为Messages example_messages [] for txt,tool_call in examples: if tool_call.people: ai_response 检测到人 else: ai_response 未检测到人 example_messages.extend(tool_example_to_messages( txt,#示例的输入 [tool_call], #工具(Data(people[])) ai_responseai_response,#让LLM强制返回ai_response )) # print(example_messages) #[ # HumanMessage(content海洋是广阔的,蓝色的.它有两万多英尺, additional_kwargs{}, response_metadata{}), # AIMessage(content, additional_kwargs{tool_calls: [{id: 8a02eca2-16c3-4295-bbb5-e5286a9eb597, type: function, function: {name: Data, arguments: {people:[]}}}]}, response_metadata{}, tool_calls[{name: Data, args: {people: []}, id: 8a02eca2-16c3-4295-bbb5-e5286a9eb597, type: tool_call}]), # ToolMessage(contentYou have correctly called this tool., tool_call_id8a02eca2-16c3-4295-bbb5-e5286a9eb597), # AIMessage(content未检测到人, additional_kwargs{}, response_metadata{}), # # HumanMessage(content小明在跳舞,1米78的身高看起来很灵活, additional_kwargs{}, response_metadata{}), # AIMessage(content, additional_kwargs{tool_calls: [{id: 033ed3f3-2380-43d3-b5b9-8ee074022831, type: function, function: {name: Data, arguments: {people:[{name:小明,hair_color:null,skin_color:null,height_in_meters:1.78}]}}}]}, response_metadata{}, tool_calls[{name: Data, args: {people: [{name: 小明, hair_color: None, skin_color: None, height_in_meters: 1.78}]}, id: 033ed3f3-2380-43d3-b5b9-8ee074022831, type: tool_call}]), # ToolMessage(contentYou have correctly called this tool., tool_call_id033ed3f3-2380-43d3-b5b9-8ee074022831), # AIMessage(content检测到人, additional_kwargs{}, response_metadata{}) # ] #定义结构化字段 #structured_model model.with_structured_output(schemaData,methodjson_mode) #定义链(不用强制结构化输出) chain prompt_template | model chain.invoke( { example_messages: example_messages, new_message: 篮球场上⾝⾼两⽶的中锋王伟默契地将球传给⼀⽶七的后卫挚友李明完成⼀记绝杀,这对⽼友⽤⼗年配合弥补了⾝⾼的差距。 } ).pretty_print()4.示例选择器Exampleselectorsa.按长度选择示例Lengthfrom langchain_core.example_selectors import LengthBasedExampleSelector from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate # 反义词示例集合 examples [ {input: happy, output: sad}, {input: tall, output: short}, {input: energetic, output: lethargic}, {input: sunny, output: gloomy}, {input: windy, output: calm}, ] # 字符串模板 example_prompt PromptTemplate( input_variables[input, output], templateInput: {input}\nOutput: {output}, ) # 长度示例选择器 example_selector LengthBasedExampleSelector( examplesexamples, example_promptexample_prompt, # 格式化示例的最大长度。 # 长度由下面的get_text_length函数测量。 max_length25, # 用于获取字符串长度的函数用于确定包含哪些示例。 # 如果没有指定它是作为默认值提供的。 # 该函数返回一个整数表示字符串中由换行符或空格分隔的单词数量 # get_text_length: Callable[[str], int] lambda x: len(re.split(\n| , x)) ) # 用于实例化示例的模板 dynamic_prompt FewShotPromptTemplate( # 提供了一个ExampleSelector而不是examples。 example_selectorexample_selector, example_promptexample_prompt, prefix给出每个输入的反义词, suffixInput: {adjective}\nOutput:, input_variables[adjective], ) print( dynamic_prompt.invoke({adjective: big}).to_messages()[0].content )# ⼀个⻓的⽰例输⼊所有⽰例超出最⼤⻓度 long_string ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常 ⾮常⼤⽐其他任何东西都要⼤得多 print( dynamic_prompt.invoke({adjective: long_string}).to_messages()[0].content )b.按语义相似性选择示例Similarityfrom webbrowser import Chrome from langchain_chroma import Chroma from langchain_community.embeddings import OpenAIEmbeddings, ZhipuAIEmbeddings from langchain_core.example_selectors import LengthBasedExampleSelector, SemanticSimilarityExampleSelector from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate import os os.environ[LANGCHAIN_TRACING_V2] false # 关掉追踪 # 反义词示例集合 examples [ {input: happy, output: sad}, {input: tall, output: short}, {input: energetic, output: lethargic}, {input: sunny, output: gloomy}, {input: windy, output: calm}, ] # 字符串模板 example_prompt PromptTemplate.from_template( Input: {input}\nOutput: {output}, ) embedding ZhipuAIEmbeddings( modelembedding-2, # 智谱官方嵌入模型稳定且国内连通率100% # api_key你的Key # 可选如果你没设置环境变量就手动填 ) # 长度示例选择器 example_selector SemanticSimilarityExampleSelector.from_examples( examples, #示例集 embedding, #嵌入模型 Chroma, #向量数据库 k1, #示例中筛选最相似的k个 ) # 用于实例化示例的模板 prompt FewShotPromptTemplate( # 提供了一个ExampleSelector而不是examples。 example_selectorexample_selector, example_promptexample_prompt, prefix给出每个输入的反义词: , suffixInput: {adjective}\nOutput:, input_variables[adjective], ) print( prompt.invoke({adjective: big}).to_messages()[0].content )c.按最大边际相关性选择示例MMRfrom webbrowser import Chrome from langchain_chroma import Chroma from langchain_community.embeddings import OpenAIEmbeddings, ZhipuAIEmbeddings from langchain_core.example_selectors import LengthBasedExampleSelector, SemanticSimilarityExampleSelector, \ MaxMarginalRelevanceExampleSelector from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate import os os.environ[LANGCHAIN_TRACING_V2] false # 关掉追踪 # 反义词示例集合 examples [ {input: happy, output: sad}, {input: tall, output: short}, {input: energetic, output: lethargic}, {input: sunny, output: gloomy}, {input: windy, output: calm}, ] # 字符串模板 example_prompt PromptTemplate.from_template( Input: {input}\nOutput: {output}, ) embedding ZhipuAIEmbeddings( modelembedding-2, # 智谱官方嵌入模型稳定且国内连通率100% # api_key你的Key # 可选如果你没设置环境变量就手动填 ) example_selector MaxMarginalRelevanceExampleSelector.from_examples( examples, embedding, Chroma, k3, ) # 用于实例化示例的模板 prompt FewShotPromptTemplate( # 提供了一个ExampleSelector而不是examples。 example_selectorexample_selector, example_promptexample_prompt, prefix给出每个输入的反义词: , suffixInput: {adjective}\nOutput:, input_variables[adjective], ) print( prompt.invoke({adjective: big}).to_messages()[0].content )d.通过ngram重叠选择示例Ngramfrom webbrowser import Chrome from langchain_chroma import Chroma from langchain_community.embeddings import OpenAIEmbeddings, ZhipuAIEmbeddings from langchain_community.example_selectors import NGramOverlapExampleSelector from langchain_core.example_selectors import LengthBasedExampleSelector, SemanticSimilarityExampleSelector from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate import os os.environ[LANGCHAIN_TRACING_V2] false # 关掉追踪 # 字符串模板 example_prompt PromptTemplate.from_template( Input: {input}\nOutput: {output}, ) embedding ZhipuAIEmbeddings( modelembedding-2, # 智谱官方嵌入模型稳定且国内连通率100% # api_key你的Key # 可选如果你没设置环境变量就手动填 ) # 示例集合 examples [ {input: See Spot run., output: 看见Spot跑}, {input: My dog barks, output: 我的狗叫}, {input: Spot can run, output: Spot能跑}, ] example_selector NGramOverlapExampleSelector( examplesexamples, example_promptexample_prompt, threshold-1.0 #阈值(-1.0代表不相关的也被筛选出来, 0.0输出结果是只与输入重叠的示例,大于1.0就是排除所有的列表) ) # 用于实例化示例的模板 prompt FewShotPromptTemplate( # 提供了一个ExampleSelector而不是examples。 example_selectorexample_selector, example_promptexample_prompt, prefix给出每个输入的中文翻译: , suffixInput: {sentence}\nOutput:, input_variables[sentence], ) print( prompt.invoke({sentence: Spot can run fast.}).to_messages()[0].content )

更多文章