03:模型与提示模板 | 青训营X豆包MarsCode 技术训练营

77 阅读4分钟

前言

本次通过对实战学习资料和项目代码的学习后,主要学习了模型与提示模板相关的内容,第一部分主要介绍了 LangChain 的 模型(Model)提示模板(Prompt Template) 。通过这次学习,我对 LangChain 框架的核心组件有了更深入的理解。

一、什么是 LangChain?

首先重新回顾一下,LangChain 是一个基于大语言模型(LLM)构建应用的开发框架。它通过封装模型调用、提示工程、输出解析等模块,帮助开发者更轻松地使用大模型进行各种任务的开发。 LangChain 的核心驱动力就是 大语言模型(LLM) 。没有模型的支持,LangChain 就失去了意义。因此,理解 LangChain 的模型调用机制,是学习这个框架的关键。

1.1 LangChain 的模型 I/O

在使用语言模型时,我们可以将整个流程分为以下三个环节:

  1. 输入提示(Format) :为模型提供输入信息。
  2. 调用模型(Predict) :通过 API 发送请求,得到模型的预测输出。
  3. 输出解析(Parse) :从模型的输出中提取出所需的关键信息。

课程的学习中里面提到,这三个环节在 LangChain 中统称为 Model I/O


二、提示模板(Prompt Template)的使用

在 LangChain 中,提示模板是 Model I/O 的起点。设计一个好的提示能够显著提高模型的输出质量,这也是提示工程(Prompt Engineering)越来越受到关注的原因。

2.1 创建提示模板

以下是资料中展示的一个示例,讲解了如何使用 LangChain 提示模板生成花卉文案:

# 导入提示模板模块
from langchain.prompts import PromptTemplate

# 定义模板
template = """您是一位专业的鲜花店文案撰写员。
对于售价为 {price} 元的 {flower_name},您能提供一个吸引人的简短描述吗?
"""
# 创建 LangChain 提示模板
prompt = PromptTemplate.from_template(template)

# 输出模板内容
print(prompt)

注意

  • {flower_name}{price} 是占位符,调用时会被具体的花名和价格替换。
  • PromptTemplate.from_template() 方法将原始字符串模板转换成 LangChain 提供的提示模板对象。

2.2 调用大语言模型生成文案

接下来,示例通过 OpenAI 的 GPT-3.5 调用生成文案:

# 设置 OpenAI API Key
import os
os.environ["OPENAI_API_KEY"] = '你的 OpenAI API Key'

# 导入 LangChain 中的 OpenAI 接口
from langchain_openai import OpenAI

# 创建模型实例
model = OpenAI(model_name='gpt-3.5-turbo-instruct')

# 使用提示模板生成输入
input_text = prompt.format(flower_name="玫瑰", price='50')

# 调用模型并得到输出
output = model.invoke(input_text)
print(output)

示例输出

让你心动!50元就可以拥有这支充满浪漫气息的玫瑰花束,让TA感受你的真心爱意。

2.3 提示模板的复用性

提示模板可以灵活复用,只需替换不同的参数,即可生成不同内容的文案。以下是一个批量生成多个花卉文案的示例:

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 的优势

虽然直接使用 OpenAI API 也能实现类似功能,但黄老师强调了 LangChain 的几个独特优势:

  1. 模板化管理:简化提示的创建与复用。
  2. 模块化设计:支持多种模型调用切换,无需修改提示模板。
  3. 输出解析能力:内置输出解析工具,便于从模型响应中提取关键信息。

比如,如果想切换到 Hugging Face 提供的开源模型,只需稍作修改即可。

虽然本人也尝试用 Hugging Face 的api,但是比如在CSDN上用所谓的镜像,发现不行;则直接去官网创建api_key,可以创建,但是想要使用meta的模型,必须要先去申请使用权限,我老老实实的填完,第二天一看发现申请被拒绝了,通过相关的论坛得知中国大陆申请的基本不给通过,就释然放弃了。

from langchain_community.llms import HuggingFaceHub
os.environ['HUGGINGFACEHUB_API_TOKEN'] = '你的 HuggingFace API Token'

model = HuggingFaceHub(repo_id="google/flan-t5-large")
input_text = prompt.format(flower_name="rose", price='50')
output = model(input_text)
print(output)

四、小结

通过这次学习,我了解到 LangChain 框架在调用大语言模型时的强大优势,特别是 提示模板(Prompt Template) 的使用,大大提升了代码的复用性和效率。同时,LangChain 提供了灵活的模块化设计,可以方便地切换不同的语言模型(如 GPT、Claude、LLaMA 等),这对开发 AI 应用带来了极大的便利。

下节预告

根据课程安排,下一次我们将深入研究 LangChain 的 输出解析(Output Parsing) 功能,进一步提高模型调用的实用性。