当前位置: 首页 > news >正文

LangChain模块(一)Models模型与调用抽象(1)提示模板

Model I/O

我们可以把对模型的使用过程拆解成三块,分别是输入提示(对应图中的 Format)、调用模型(对应图中的 Predict)和输出解析(对应图中的 Parse)。这三块形成了一个整体,因此在 LangChain 中这个过程被统称为 Model I/O(Input/Output)。

在模型 I/O 的每个环节,LangChain 都为咱们提供了模板和工具,快捷地形成调用各种语言模型的接口。

1、提示模板

使用模型的第一个环节是把提示信息输入到模型中,你可以创建 LangChain 模板,根据实际需求动态选择不同的输入,针对特定的任务和应用调整输入。

LangChain 提供了多个类和函数,也为各种应用场景设计了很多内置模板,使构建和使用提示变得容易。

模板的用法见 python类库(一)模板-CSDN博客

使用 LangChain 和提示模板的好处是:

(1)代码的可读性:使用模板的话,提示文本更易于阅读和理解,特别是对于复杂的提示或多变量的情况。

(2)可复用性:

模板可以在多个地方被复用,让你的代码更简洁,不需要在每个需要生成提示的地方重新构造提示字符串。

(3)维护:

如果你在后续需要修改提示,使用模板的话,只需要修改模板就可以了,而不需要在代码中查找所有使用到该提示的地方进行修改。

(4)变量处理:

如果你的提示中涉及到多个变量,模板可以自动处理变量的插入,不需要手动拼接字符串。

(5)参数化

模板可以根据不同的参数生成不同的提示,这对于个性化生成文本非常有用。

2、语言模型

LangChain 允许你通过通用接口来调用语言模型。这意味着无论你要使用的是哪种语言模型,都可以通过同一种方式进行调用,这样就提高了灵活性和便利性。LangChain 中支持的模型有三大类。

(1)大语言模型(LLM)

也叫 Text Model,这些模型将文本字符串作为输入,并返回文本字符串作为输出。Open AI 的 text-davinci-003、Facebook 的 LLaMA、ANTHROPIC 的 Claude,都是典型的 LLM。

(2)聊天模型(Chat Model)

主要代表 Open AI 的 ChatGPT 系列模型。这些模型通常由语言模型支持,但它们的 API 更加结构化。具体来说,这些模型将聊天消息列表作为输入,并返回聊天消息。

(3)文本嵌入模型(Embedding Model)

这些模型将文本作为输入并返回浮点数列表,也就是 Embedding。而文本嵌入模型如 OpenAI 的 text-embedding-ada-002,文本嵌入模型负责把文档存入向量数据库,和提示工程关系不大。

3、输出解析

LangChain 还提供了从模型输出中提取信息的功能。通过输出解析器,你可以精确地从模型的输出中获取需要的信息,而不需要处理冗余或不相关的数据,更重要的是还可以把大模型给回的非结构化文本,转换成程序可以处理的结构化数据。

一、提示模板入门demo

代码

调用open ai

# 导入LangChain中的提示模板 from langchain.prompts import PromptTemplate # 创建原始模板 template = """您是一位专业的鲜花店文案撰写员。\n 对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗? """ # 根据原始模板创建LangChain提示模板 prompt = PromptTemplate.from_template(template) # 打印LangChain提示模板的内容 print(prompt) # 设置OpenAI API Key import os os.environ["OPENAI_API_KEY"] = '你的Open AI API Key' # 导入LangChain中的OpenAI模型接口 from langchain_openai import OpenAI # 创建模型实例 model = OpenAI(model_name='gpt-3.5-turbo-instruct') # 输入提示 input = prompt.format(flower_name=["玫瑰"], price='50') # 得到模型的输出 output = model.invoke(input) # 打印输出内容 print(output)

由于我没有open ai的key,我调用了内部的llm gateway:

# 导入LangChain中的提示模板 from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI # 1、创建原始模板 template = """您是一位专业的鲜花店文案撰写员。\n 对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗? """ # 根据原始模板创建LangChain提示模板 prompt = PromptTemplate.from_template(template) # 打印LangChain提示模板的内容 #print(prompt) # 2. 初始化你的 gateway LLM llm = ChatOpenAI( model="gpt-5.1", base_url="https://llm-gateway-xxx.xx.xxx/v1", api_key="dummy", default_headers={ "X-Api-Key": "******", } ) # 3. 格式化输入 input_text = prompt.format( flower_name="玫瑰", price="50" ) # 4. 调用模型 resp = llm.invoke(input_text) # 5. 输出结果 print(resp.content)

输出

思考

使用 LangChain 的意义究竟何在呢?直接调用 Open AI 的 API,可以实现相同的功能吗?可以

import openai # 导入OpenAI openai.api_key = 'Your-OpenAI-API-Key' # API Key prompt_text = "您是一位专业的鲜花店文案撰写员。对于售价为{}元的{},您能提供一个吸引人的简短描述吗?" # 设置提示 flowers = ["玫瑰", "百合", "康乃馨"] prices = ["50", "30", "20"] # 循环调用Text模型的Completion方法,生成文案 for flower, price in zip(flowers, prices): prompt = prompt_text.format(price, flower) response = openai.completions.create( engine="gpt-3.5-turbo-instruct", prompt=prompt, max_tokens=100 ) print(response.choices[0].text.strip()) # 输出文案

LangChain 的优势所在:我们只需要定义一次模板,就可以用它来生成各种不同的提示。对比单纯使用 f-string 来格式化文本,这种方法更加简洁,也更容易维护。而 LangChain 在提示模板中,还整合了 output_parser、template_format 以及是否需要 validate_template 等功能。

更重要的是,使用 LangChain 提示模板,我们还可以很方便地把程序切换到不同的模型,而不需要修改任何提示相关的代码。

http://www.jsqmd.com/news/621325/

相关文章:

  • 2026宜宾淋浴房技术指南:从材质到服务的全维度解析 - 优质品牌商家
  • Python DXF处理架构深度解析:ezdxf库的设计哲学与实战应用
  • 用40块钱的Luckfox Pico玩转无线图传:手把手教你用UDP+OpenCV把摄像头画面传到Ubuntu
  • ADXL345 I²C驱动开发:寄存器配置、FIFO与中断实战指南
  • AI智能体上下文驱动从入门到精通(含Conductor实战),看这篇就够了!
  • openclaw平替之nanobot源码解析(六):子智能体(Subagents)甭
  • 2026热水锅炉改造技术解析:供热系统设计/全容积式蒸汽发生器/商用容积式热水器/四川锅炉/地源热泵/选择指南 - 优质品牌商家
  • SpringBoot项目信创迁移至宝兰德中间件实战避坑指南
  • 具身智能(Embodied AI):让AI拥有“身体”和物理交互能力
  • [具身智能-338]:mcp server代码格式详解
  • Python实战:如何高效获取RealSense D405相机内参矩阵
  • 378. Java IO API - 遍历文件树
  • Claude频发Bug,AI安全引担忧
  • VS2013创建首个C++程序教程
  • 2030年软件工程教育新图景:测试从业者的专业转型之路
  • 深入解析3A与ISP算法:从基础概念到实际应用
  • AI Agent 架构图解:大模型、记忆、RAG 与工具调用的协同机制畏
  • 10万开发者调查证实AI写的代码大部分是垃圾,这个Harness Engineering方法论把产出质量拉高了3倍
  • 告别一人一链!微信URL Scheme新规详解:如何让同一个链接被千万用户访问
  • Arduino嵌入式Modbus RTU通信实战指南
  • 雪女-斗罗大陆-造相Z-Turbo生成视频封面实战:结合AE模板批量产出
  • Qwen3.5-4B-Claude-Opus详细步骤:修改系统提示词打造专属AI助教方法
  • 单片机实战:按键切换LED流水灯模式与定时器中断的协同设计
  • Deneyap气压传感器模块与MS5637嵌入式驱动开发指南
  • AI理论能力或吞噬美国就业市场?真相并非如此
  • 深入解析SQL中的SYSDATE函数:从基础到高级应用
  • DeepSeek V4将至,基础设施能扛住吗?
  • Qwen2.5-VL图文对话模型应用:智能识图助手快速搭建与体验
  • 高效开发者的秘密武器:深度工作与心流状态
  • 从湖北师大真题看C语言核心考点:循环、递归、数组实战避坑指南