LangChain实战课 模型I/O:输入提示、调用模型、解析输出|豆包MarsCode AI刷题

105 阅读4分钟

LangChain实战课 模型I/O:输入提示、调用模型、解析输出|豆包MarsCode AI刷题

一、课程背景

在本节课中,我们深入学习了LangChain框架的核心组件——模型(Model)。LangChain是一个用于构建基于大语言模型(LLM)的应用开发的框架,它为我们提供了灵活的工具,帮助我们更高效地创建智能应用。在这节课中,我们以鲜花文案生成作为例子,探讨了如何通过LangChain框架调用大语言模型,实现应用开发。

二、LangChain框架概述

LangChain框架的核心由六大组件组成,其中模型(LLM)是框架的底层组成部分,所有的应用都依赖于模型作为驱动核心。LangChain提供了高效的接口来处理模型的输入输出操作,使得我们可以轻松调用多种语言模型,如OpenAI、HuggingFace等。

模型I/O(Input/Output)

模型I/O是指我们如何与语言模型进行交互。这个过程分为三个主要环节:

  1. 输入提示(Prompt) :构建有效的输入提示是使用大语言模型的关键。我们可以创建LangChain的提示模板,动态地调整输入以满足不同任务的需求。
  2. 调用模型(Prediction) :LangChain允许我们通过统一接口调用不同的语言模型,这样可以提高开发的灵活性。
  3. 输出解析(Parsing) :LangChain为输出解析提供了多种工具,帮助我们从模型返回的文本中提取结构化数据,便于后续处理。

三、构建提示模板

在实际应用中,提示工程(Prompt Engineering)是一个非常重要的环节。构建好的提示模板能够帮助我们更加高效地与语言模型进行交互。我们创建了一个简单的提示模板,目的是为每种鲜花生成吸引人的文案。

提示模板代码示例:

from langchain.prompts import PromptTemplate

template = """您是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?
"""

prompt = PromptTemplate.from_template(template)

四、调用大语言模型生成文案

通过调用OpenAI的API,我们能够将生成的提示模板传递给模型,并获取返回的文案。以下是调用模型的代码示例:

调用模型代码:

import os
from langchain_openai import OpenAI

os.environ["OPENAI_API_KEY"] = '你的Open AI API Key'
model = OpenAI(model_name='gpt-3.5-turbo-instruct')

flowers = ["玫瑰", "百合", "康乃馨"]
prices = ["50", "30", "20"]

for flower, price in zip(flowers, prices):
    input_prompt = prompt.format(flower_name=flower, price=price)
    output = model.invoke(input_prompt)
    print(output)

五、模型输出解析与结构化数据

在本节课的进一步学习中,我们使用了LangChain的输出解析器,将模型生成的文本转化为结构化数据。通过指定响应模式,模型可以按照我们的要求返回包含多个字段的数据,进一步优化了文案的处理流程。

输出解析代码:


from langchain.output_parsers import StructuredOutputParser, ResponseSchema

response_schemas = [
    ResponseSchema(name="description", description="鲜花的描述文案"),
    ResponseSchema(name="reason", description="撰写文案的原因")
]

output_parser = StructuredOutputParser.from_response_schemas(response_schemas)

通过这个过程,模型返回的文案会被解析为结构化的数据,例如一个包含“description”和“reason”字段的字典。这为后续的数据处理提供了极大的便利,尤其是在需要将文案存储或进一步分析时。

六、总结与思考

在本节课中,我们不仅学习了如何使用LangChain框架来自动生成鲜花文案,还了解了如何通过提示模板、模型调用以及输出解析的方式,提高语言模型应用的效率和准确性。相比直接调用API,LangChain框架为我们提供了更多的灵活性和可维护性。

LangChain的优势:

  1. 模板管理:LangChain帮助我们集中管理多个提示模板,确保代码的简洁和清晰。
  2. 输出格式化:通过输出解析器,我们可以直接获得结构化的数据,方便后续处理。
  3. 模型切换:LangChain允许我们轻松切换不同的模型,只需更改模型名称,无需修改提示内容。