马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、提示词模板
目的:
先容
LangChain的提示词模板引擎(Prompt Template Engine)是核心组件之一,重要用于构建和管理与大预言模子交互的提示词。
作用是 将用户的输入或动态数据结构化嵌入到预界说的模板中,从而天生适当模子处理惩罚的提示词,提拔输出的准确性和同等性。
示例- from langchain_community.llms import tongyi
- from langchain.prompts import PromptTemplate
- # ==================== 配置 ====================
- key = "your key"#替换为个人申请的api_key
- llm = tongyi.Tongyi(api_key=key)
- # 定义模板
- tempalte = '你是一个{role},请用{style}风格回答{question}'
- #创建模板对象
- prompt_template = PromptTemplate.from_template(tempalte)
- #变量填充
- filled_prompt = prompt_template.format(role='数学老师',style='通俗易懂',question='勾股定理是什么?')
- #模型回答
- response = llm.invoke(filled_prompt)
- print(response)
复制代码 二、输特别式化
- from langchain_community.llms import tongyi
- from langchain.output_parsers import StructuredOutputParser,ResponseSchema
- from langchain.prompts import PromptTemplate
- # ==================== 配置 ====================
- key = "your key"#替换为个人申请的api_key
- llm = tongyi.Tongyi(api_key=key)
- #定义输出结构
- response_schemas = [
- ResponseSchema(name='name',description='人的姓名',type='string'),
- ResponseSchema(name='age',description='人的年龄',type='integer')
- ]
- #创建输出解析器
- output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
- #创建提示模板,包含格式化指令
- template = """你是一个信息提取助手,请从以下文本中提取姓名和年龄,并以JSON格式返回:
- 文本:{input_text}
- {format_instructions}"""
- prompt = PromptTemplate(
- template=template,
- partial_variables={"format_instructions":output_parser.get_format_instructions()}
- )
- #填充输入
- input_text = "张三今年25岁,来自北京。"
- filled_prompt = prompt.format(input_text=input_text)
- #获取响应
- response = llm.invoke(filled_prompt)
- parsed_output = output_parser.parse(response)
- print(parsed_output)
复制代码 示例-对象- from langchain.output_parsers import PydanticOutputParser
- from pydantic import BaseModel,Field
- from langchain_community.llms import tongyi
- from langchain.prompts import PromptTemplate
- # ==================== 配置 ====================
- key = "your key"#替换为个人申请的api_key
- llm = tongyi.Tongyi(api_key=key)
- #定义输出模板,Person对象
- class Person(BaseModel):
- name:str = Field(description="name of a person")
- age:int = Field(description="age of a person")
- #创建输出解析器
- output_parser = PydanticOutputParser(pydantic_object=Person)
- #创建提示模板
- template = """你是一个信息提取助手,请从以下文本中提取姓名和年龄,并以Person格式返回:
- 文本:{input_text}
- {format_instructions}"""
- prompt = PromptTemplate(
- template=template,
- partial_variables={"format_instructions":output_parser.get_format_instructions()}
- )
- #填充输入
- input_text = "张三今年28岁,来自北京。"
- filled_prompt = prompt.format(input_text=input_text)
- #获取响应
- response = llm.invoke(filled_prompt)
- parsed_output = output_parser.parse(response)
- print(parsed_output)
复制代码 三、链式调用
目的:
先容
LLMChain是一个核心对象,用于实现基于LLM的链式调用。
它将提示词模板、语言模子以及可选的输出表明器组合在一起,形成一个可重复实行的流程,简化了与LLM的交互。
LLMChain的核心组件:
1.PromptTemplate:
- 界说提示词的模板,包罗占位符,用于动态天生提示词。
2.LLM:
3.OutputParser(可选):
4.Memory(可选):
示例- from langchain_community.llms import tongyi
- from langchain.output_parsers import StructuredOutputParser,ResponseSchema
- from langchain.prompts import PromptTemplate
- from langchain.chains import LLMChain
- # ==================== 配置 ====================
- key = "your key"#替换为个人申请的api_key
- llm = tongyi.Tongyi(api_key=key)
- #定义输出结构
- response_schemas = [
- ResponseSchema(name='answer',description='问题的答案',type='string'),
- ResponseSchema(name='confidence',description='答案的置信度',type='float')
- ]
- #创建输出解析器
- output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
- #创建提示模板
- template = """你是一名数学老师,请用{style}风格回答以下问题,并以JSON格式返回答案和置信度:
- 问题:{question}
- {format_instructions}"""
- prompt = PromptTemplate(
- template=template,
- partial_variables={"format_instructions":output_parser.get_format_instructions()}
- )
- #创建LLMChain-写法进行警告,最终使用了最新的写法
- # llm_chain = LLMChain(llm=llm,prompt=prompt,output_parser=output_parser)
- #
- # #运行链
- # response = llm_chain.run({
- # 'style':'通俗易懂',
- # 'question':'勾股定理是什么'
- # })
- chain = prompt|llm|output_parser
- response = chain.invoke({
- 'style':'通俗易懂',
- 'question':'勾股定理是什么'
- })
- print(response)
复制代码 四、流式输出
对比维度
| 非流式(平凡)
| 流式(Stream)
| 返回方式
| 等候完备复兴后一次性返回
| 天生一个字符就返回一个字符
| 用户体验
| 长时间等候后忽然看到大段笔墨
| 像打字机一样逐字出现
| 首字耽误
| 便是总相应时间
| 极短(几十毫秒)
| 实用场景
| 批量处理惩罚、自动化
| 对话交互、实时反馈
| 示例- from langchain_community.llms import tongyi
- from langchain.output_parsers import StructuredOutputParser,ResponseSchema
- from langchain.prompts import PromptTemplate
- # ==================== 配置 ====================
- key = "your key"#替换为个人申请的api_key
- llm = tongyi.Tongyi(api_key=key)
- #定义输出结构
- response_schemas = [
- ResponseSchema(name='answer',description='问题的答案',type='string'),
- ResponseSchema(name='confidence',description='答案的置信度',type='float')
- ]
- #创建输出解析器
- output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
- #创建提示模板
- template = """你是一名数学老师,请用{style}风格回答以下问题,并以JSON格式返回答案和置信度:
- 问题:{question}
- {format_instructions}"""
- prompt = PromptTemplate(
- template=template,
- partial_variables={"format_instructions":output_parser.get_format_instructions()}
- )
- #创建LLMChain--写法进行警告,最终使用了最新的写法
- # llm_chain = LLMChain(llm=llm,prompt=prompt,output_parser=output_parser)
- #
- # #运行链
- # response = llm_chain.run({
- # 'style':'通俗易懂',
- # 'question':'勾股定理是什么'
- # })
- chain = prompt|llm
- #流式输出
- chunks = []
- for chunk in chain.stream({
- 'style':'通俗易懂',
- 'question':'勾股定理是什么'
- }):
- chunks.append(chunk)#存储每次的输出结果
- print(chunk,end='',flush=True)
复制代码 |