提示词相干

[复制链接]
发表于 2026-6-15 10:34:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、提示词模板

目的:

  • 相识提示词模板的作用
  • 相识提示词模板的使用方式
先容
LangChain的提示词模板引擎(Prompt Template Engine)是核心组件之一,重要用于构建和管理与大预言模子交互的提示词。
作用是 将用户的输入或动态数据结构化嵌入到预界说的模板中,从而天生适当模子处理惩罚的提示词,提拔输出的准确性和同等性。
示例
  1. from langchain_community.llms import tongyi
  2. from langchain.prompts import PromptTemplate
  3. # ==================== 配置 ====================
  4. key = "your key"#替换为个人申请的api_key
  5. llm = tongyi.Tongyi(api_key=key)
  6. # 定义模板
  7. tempalte = '你是一个{role},请用{style}风格回答{question}'
  8. #创建模板对象
  9. prompt_template = PromptTemplate.from_template(tempalte)
  10. #变量填充
  11. filled_prompt = prompt_template.format(role='数学老师',style='通俗易懂',question='勾股定理是什么?')
  12. #模型回答
  13. response = llm.invoke(filled_prompt)
  14. print(response)
复制代码
二、输特别式化
  1. from langchain_community.llms import tongyi
  2. from langchain.output_parsers import StructuredOutputParser,ResponseSchema
  3. from langchain.prompts import PromptTemplate
  4. # ==================== 配置 ====================
  5. key = "your key"#替换为个人申请的api_key
  6. llm = tongyi.Tongyi(api_key=key)
  7. #定义输出结构
  8. response_schemas = [
  9.     ResponseSchema(name='name',description='人的姓名',type='string'),
  10.     ResponseSchema(name='age',description='人的年龄',type='integer')
  11. ]
  12. #创建输出解析器
  13. output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
  14. #创建提示模板,包含格式化指令
  15. template = """你是一个信息提取助手,请从以下文本中提取姓名和年龄,并以JSON格式返回:
  16. 文本:{input_text}
  17. {format_instructions}"""
  18. prompt = PromptTemplate(
  19.     template=template,
  20.     partial_variables={"format_instructions":output_parser.get_format_instructions()}
  21. )
  22. #填充输入
  23. input_text = "张三今年25岁,来自北京。"
  24. filled_prompt = prompt.format(input_text=input_text)
  25. #获取响应
  26. response = llm.invoke(filled_prompt)
  27. parsed_output = output_parser.parse(response)
  28. print(parsed_output)
复制代码
示例-对象
  1. from langchain.output_parsers import PydanticOutputParser
  2. from pydantic import BaseModel,Field
  3. from langchain_community.llms import tongyi
  4. from langchain.prompts import PromptTemplate
  5. # ==================== 配置 ====================
  6. key = "your key"#替换为个人申请的api_key
  7. llm = tongyi.Tongyi(api_key=key)
  8. #定义输出模板,Person对象
  9. class Person(BaseModel):
  10.     name:str = Field(description="name of a person")
  11.     age:int = Field(description="age of a person")
  12. #创建输出解析器
  13. output_parser = PydanticOutputParser(pydantic_object=Person)
  14. #创建提示模板
  15. template = """你是一个信息提取助手,请从以下文本中提取姓名和年龄,并以Person格式返回:
  16. 文本:{input_text}
  17. {format_instructions}"""
  18. prompt = PromptTemplate(
  19.     template=template,
  20.     partial_variables={"format_instructions":output_parser.get_format_instructions()}
  21. )
  22. #填充输入
  23. input_text = "张三今年28岁,来自北京。"
  24. filled_prompt = prompt.format(input_text=input_text)
  25. #获取响应
  26. response = llm.invoke(filled_prompt)
  27. parsed_output = output_parser.parse(response)
  28. print(parsed_output)
复制代码
三、链式调用

目的:

  • 相识什么是链式调用
  • 相识怎样使用链式调用
先容
LLMChain是一个核心对象,用于实现基于LLM的链式调用。
它将提示词模板、语言模子以及可选的输出表明器组合在一起,形成一个可重复实行的流程,简化了与LLM的交互。
LLMChain的核心组件:
1.PromptTemplate:

  • 界说提示词的模板,包罗占位符,用于动态天生提示词。
2.LLM:

  • 大语言模子,根据提示词天生输出。
3.OutputParser(可选):

  • 用于将LLM的原始文本输出分析为结构化格式。
4.Memory(可选):

  • 可集成上下文影象,支持对话汗青管理。
示例
  1. from langchain_community.llms import tongyi
  2. from langchain.output_parsers import StructuredOutputParser,ResponseSchema
  3. from langchain.prompts import PromptTemplate
  4. from langchain.chains import LLMChain
  5. # ==================== 配置 ====================
  6. key = "your key"#替换为个人申请的api_key
  7. llm = tongyi.Tongyi(api_key=key)
  8. #定义输出结构
  9. response_schemas = [
  10.     ResponseSchema(name='answer',description='问题的答案',type='string'),
  11.     ResponseSchema(name='confidence',description='答案的置信度',type='float')
  12. ]
  13. #创建输出解析器
  14. output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
  15. #创建提示模板
  16. template = """你是一名数学老师,请用{style}风格回答以下问题,并以JSON格式返回答案和置信度:
  17. 问题:{question}
  18. {format_instructions}"""
  19. prompt = PromptTemplate(
  20.     template=template,
  21.     partial_variables={"format_instructions":output_parser.get_format_instructions()}
  22. )
  23. #创建LLMChain-写法进行警告,最终使用了最新的写法
  24. # llm_chain = LLMChain(llm=llm,prompt=prompt,output_parser=output_parser)
  25. #
  26. # #运行链
  27. # response = llm_chain.run({
  28. #     'style':'通俗易懂',
  29. #     'question':'勾股定理是什么'
  30. # })
  31. chain = prompt|llm|output_parser
  32. response = chain.invoke({
  33.     'style':'通俗易懂',
  34.     'question':'勾股定理是什么'
  35. })
  36. print(response)
复制代码
四、流式输出

对比维度
非流式(平凡)
流式(Stream)
返回方式
等候完备复兴后一次性返回
天生一个字符就返回一个字符
用户体验
长时间等候后忽然看到大段笔墨
像打字机一样逐字出现
首字耽误
便是总相应时间
极短(几十毫秒)
实用场景
批量处理惩罚、自动化
对话交互、实时反馈
示例
  1. from langchain_community.llms import tongyi
  2. from langchain.output_parsers import StructuredOutputParser,ResponseSchema
  3. from langchain.prompts import PromptTemplate
  4. # ==================== 配置 ====================
  5. key = "your key"#替换为个人申请的api_key
  6. llm = tongyi.Tongyi(api_key=key)
  7. #定义输出结构
  8. response_schemas = [
  9.     ResponseSchema(name='answer',description='问题的答案',type='string'),
  10.     ResponseSchema(name='confidence',description='答案的置信度',type='float')
  11. ]
  12. #创建输出解析器
  13. output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
  14. #创建提示模板
  15. template = """你是一名数学老师,请用{style}风格回答以下问题,并以JSON格式返回答案和置信度:
  16. 问题:{question}
  17. {format_instructions}"""
  18. prompt = PromptTemplate(
  19.     template=template,
  20.     partial_variables={"format_instructions":output_parser.get_format_instructions()}
  21. )
  22. #创建LLMChain--写法进行警告,最终使用了最新的写法
  23. # llm_chain = LLMChain(llm=llm,prompt=prompt,output_parser=output_parser)
  24. #
  25. # #运行链
  26. # response = llm_chain.run({
  27. #     'style':'通俗易懂',
  28. #     'question':'勾股定理是什么'
  29. # })
  30. chain = prompt|llm
  31. #流式输出
  32. chunks = []
  33. for chunk in chain.stream({
  34.     'style':'通俗易懂',
  35.     'question':'勾股定理是什么'
  36. }):
  37.     chunks.append(chunk)#存储每次的输出结果
  38.     print(chunk,end='',flush=True)
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表