Model I/O我们可以把对模型的使用过程拆解成三块分别是输入提示对应图中的 Format、调用模型对应图中的 Predict和输出解析对应图中的 Parse。这三块形成了一个整体因此在 LangChain 中这个过程被统称为 Model I/OInput/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_namegpt-3.5-turbo-instruct) # 输入提示 input prompt.format(flower_name[玫瑰], price50) # 得到模型的输出 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( modelgpt-5.1, base_urlhttps://llm-gateway-xxx.xx.xxx/v1, api_keydummy, default_headers{ X-Api-Key: ******, } ) # 3. 格式化输入 input_text prompt.format( flower_name玫瑰, price50 ) # 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( enginegpt-3.5-turbo-instruct, promptprompt, max_tokens100 ) print(response.choices[0].text.strip()) # 输出文案LangChain 的优势所在我们只需要定义一次模板就可以用它来生成各种不同的提示。对比单纯使用 f-string 来格式化文本这种方法更加简洁也更容易维护。而 LangChain 在提示模板中还整合了 output_parser、template_format 以及是否需要 validate_template 等功能。更重要的是使用 LangChain 提示模板我们还可以很方便地把程序切换到不同的模型而不需要修改任何提示相关的代码。