做网站时无法上传图片,可信网站查询官网,济南网站制作哪家最好,wordpress数据库链接不上文章目录 前提回顾FewShotPromptTemplateforamt格式化 前提回顾
前面已经实现了一个翻译助手了[prompt第三讲-PromptTemplate]#xff0c;prompt模板设计中#xff0c;有说明、案例、和实际的问题
# -*- coding: utf-8 -*-Time #xff1a; 2024/7/8 … 文章目录 前提回顾FewShotPromptTemplateforamt格式化 前提回顾
前面已经实现了一个翻译助手了[prompt第三讲-PromptTemplate]prompt模板设计中有说明、案例、和实际的问题
# -*- coding: utf-8 -*-Time 2024/7/8 9:44
Auth leonfrom langchain_core.prompts import PromptTemplate
# 4. 定义部分变量
prompt_template PromptTemplate.from_template(
你是一个翻译助手你擅长将{source_language}翻译为{dst_language}请将我发送给你的question的内容翻译为{dst_language}不要返回无关的内容只需返回最终翻译结果下面的history examples中提供了一些具体的案例为你提供一些参考## history examples:
question:美丽-answer:beautiful;
question:男孩-answer:boy;
question:男人-answer:man;
question:456-answer:four hundred and fifty-six;
question:1-answer:one;
question:34-answer:thirty-four;## user true task:
question{user_input_words}-answer
)
lag2lag input(你想我成为什么翻译助手(格式如中文-英文))
source_language,dst_language lag2lag.split(-)
new_prompt_template prompt_template.partial(source_languagesource_language,dst_languagedst_language)
print(助手初始化完毕您的翻译助手上线)
# 2. llm定义
from langchain_community.llms import Tongyi
from pydantic_settings import BaseSettings,SettingsConfigDict
2,1 获取千问的key
我这么写的原因是因为方便我上传项目到github的同时不暴露我的key所以我把可以key保存到了最外部的一个.env文件中
这样我每一次同步到github的时候就不会把key也推出去你们测试的时候可以直接写成
qwen_keysk-cc2209cec48c4bc966fb4acda169e,这样省事。class ModelConfig(BaseSettings):model_config SettingsConfigDict(env_file../../../.env,env_file_encodingutf-8)qwen_key:strdeepseek_key:strdeepseek_base_url:strmodel_config ModelConfig()
qwen_key model_config.qwen_key
# 1. 读取配置信息,获取模型key
llm Tongyi(dashscope_api_keyqwen_key)while(True):user_input_word input(f请输入需要翻译的{source_language})if user_input_word.lower() quit:breakelse:prompt new_prompt_template.invoke({user_input_words:user_input_word})print(llm.invoke(prompt))
FewShotPromptTemplate
下面我们换一种更加优雅的方式来实现上面的prompt模板
# -*- coding: utf-8 -*-Time 2024/7/9 9:44
Auth leonfrom langchain_core.prompts import PromptTemplate,FewShotPromptTemplate
example_prompt PromptTemplate.from_template(question: {question}-answer:{answer})
examples [{question:美丽,answer:beautiful},{question:男孩,answer:boy},{question:男人,answer:man},{question:456,answer:four},{question:456,answer:four hundred and fifty-six},{question:1,answer:one},{question:34,answer:thirty-four}
]
prefix
你是一个翻译助手你擅长将{source_language}翻译为{dst_language}请将我发送给你的question的内容翻译为{dst_language}不要返回无关的内容只需返回最终翻译结果下面的history examples中提供了一些具体的案例为你提供一些参考
## history examples:suffix
## user true task:
question{user_input_words}-answerprompt_template FewShotPromptTemplate(examplesexamples,example_promptexample_prompt,prefixprefix,suffixsuffix,input_variables[user_input_words,source_language,dst_language]
)lag2lag input(你想我成为什么翻译助手(格式如中文-英文))
source_language,dst_language lag2lag.split(-)
new_prompt_template prompt_template.partial(source_languagesource_language,dst_languagedst_language)from langchain_community.llms import Tongyi
from pydantic_settings import BaseSettings,SettingsConfigDict
2,1 获取千问的key
我这么写的原因是因为方便我上传项目到github的同时不暴露我的key所以我把可以key保存到了最外部的一个.env文件中
这样我每一次同步到github的时候就不会把key也推出去你们测试的时候可以直接写成
qwen_keysk-cc2209cec48c4bc966fb4acda169e,这样省事。class ModelConfig(BaseSettings):model_config SettingsConfigDict(env_file../../../.env,env_file_encodingutf-8)qwen_key:strdeepseek_key:strdeepseek_base_url:strmodel_config ModelConfig()
qwen_key model_config.qwen_key
# 1. 读取配置信息,获取模型key
llm Tongyi(dashscope_api_keyqwen_key)while(True):user_input_word input(f请输入需要翻译的{source_language})if user_input_word.lower() quit:breakelse:prompt new_prompt_template.invoke({user_input_words:user_input_word})print(llm.invoke(prompt))着重看一下FewShotPromptTemplate定义模板部分他没有什么方法可以实例化对象只支持直接实例化而实例化 要传入的参数也不用咋说格式一目了然 参数讲解
example_prompt你想要案例遵守的prompt模板格式examples一个案例列表里面是多个字典字典的key必须和example_prompt中定义的变量是统一的prefix你想要在案例前面插入的内容如果是接着前面的翻译助手那这里通常就是这个助手的能力说明suffix:通常就是你想要最后插入的实际的问题的prompt模板input_variables变量说明这个变量来自prefix和suffix
foramt格式化
因为FewShotPromptTemplate也是继承自runnable的所以他有的方法和变量基本和前面讲的PromptTemplate差不多 变量可能会有些变化但是方法基本是统一的也是遵从invokebatch,stream那一套的而invoke最底层是 调用了format所以我只需要讲解一下format其他的都懂了
format的原理如下
遍历examples列表根据example_prompt模板格式实例化出一个prompt列表并且以空格的形式进行拼接成一个字符串将prefix添加到第一步得到prompt字符串前面将suffix添加到prompt字符串后面将输入的变量填入新的模板中得到格式化后的prompt
其他支持的方法和前面的PromptTemplate是一样的invokebatchstream等需要注意的是它也提供了save功能但是 没有提供加载功能这很奇怪。
附上筋斗云会有完整教程和代码https://github.com/traveler-leon/langchain-learning.git