青训营X豆包MarsCode 技术训练营第一课-初识LangChain | 豆包MarsCode AI 刷题

84 阅读4分钟

1. 开篇介绍与课程背景

本篇学习笔记基于《带你亲证AI应用开发的“奇点”时刻》课程中的代码示例。课程链接:掘金课程链接

以下内容总结了 LangChain 与 OpenAI API 的基础认识、使用方法以及 Chat 和 Text 模型的区别

通过提前阅读课程资料和相关文章,我了解到:

  1. LangChain 是一个基于大语言模型(LLMs)的应用开发框架,旨在帮助开发者通过集成和扩展 LLM 的功能来构建复杂的 AI 应用。它提供了一系列工具、组件和接口,使得开发语言模型驱动的应用更为简单、高效。
  2. OpenAI API 提供了对大型语言模型(如 GPT-3.5、GPT-4)的访问能力,使开发者能够调用这些模型进行自然语言处理任务。通过 OpenAI API,可以实现文本生成、对话系统、问答等多种场景的应用。LangChain 可以利用 OpenAI API 调用这些语言模型,结合其框架特性实现数据感知和环境交互的高级功能。

这两个都是我们本次课程学习的很基本的概念

LangChain 框架介绍

  • LangChain 的核心目标

    1. 数据感知:将语言模型与外部数据源连接,使其能够理解和利用更丰富的数据。
    2. 代理性:让语言模型与环境交互,使其具备更强的自主决策能力。
  • LangChain 的 6 大核心组件

    1. 模型(Models) :封装对各类大语言模型的调用及输出解析。
    2. 提示模板(Prompts) :优化和标准化提示工程。
    3. 数据检索(Indexes) :建立本地知识库,支持高效的文档检索。
    4. 记忆(Memory) :通过短期和长期记忆,让 AI 具备对话上下文记忆能力。
    5. 链(Chains) :封装功能模块,实现自动化任务流。
    6. 代理(Agents) :调用外部工具,自主执行复杂任务。

2. 代码示例解析

2.1 LangChain 调用 Chat 模型
import os
from langchain_openai import ChatOpenAI

# 设置语言模型
llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

# 预测情人节红玫瑰的中文宣传语
text = llm.predict("请给我写一句情人节红玫瑰的中文宣传语")
print(text)

代码理解:

  • 通过 ChatOpenAI 类调用了 OpenAI 的 Chat 模型。
  • os.environ.get("LLM_MODELEND") 用于获取环境变量中定义的模型名称。(如何配置环境变量参考readme文件中的步骤流程)
  • predict() 方法用于生成调用 api 返回的文本。
2.2 Chat 模型 对比 Text 模型 的调用方式

Chat 模型:

import os
from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    messages=[
        {"role": "system", "content": "You are a creative AI."},
        {"role": "user", "content": "请给我的花店起个名"},
    ],
    temperature=0.8,
    max_tokens=600,
)

print(response.choices[0].message.content)

Text 模型:

response = client.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    temperature=0.5,
    max_tokens=100,
    prompt="请给我的花店起个名",
)
print(response.choices[0].text.strip())

区别:

  • 我们可以看到在代码中,Chat 模型 可以接受多个消息(通过 messages 参数设置多个),所以支持更复杂的对话场景。
  • 对于Text 模型 ,仅仅可以接受单一的 prompt ,单一的文本提示(prompt)会更加适合简单的文本生成任务。
2.3 Chat 模型中的角色定义

在 Chat 模型中有三种角色:

  • system:设定对话背景。例如,“你是一个智能助手”。
  • user:用户输入的内容。例如,“请给我的花店起个名”。
  • assistant:模型的回复。

角色的设定帮助模型更好地理解对话的上下文,从而生成更符合预期的响应。


3. 核心参数解析

  • temperature : 控制文本生成的随机性,范围为 0-1,值越高则生成文本越多样化。 例如:temperature=0.5 适合要求稳定输出的任务,temperature=0.8 则适合更具创意的生成任务。

  • max_tokens : 用于控制生成文本的长度上限。


4. 通过 LangChain 调用 OpenAI 模型

调用 Text 模型示例:

import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model=os.environ.get("LLM_MODELEND"),
    temperature=0.8,
    max_tokens=600,
)
response = llm.predict("请给我的花店起个名")
print(response)

调用 Chat 模型示例:

from langchain.schema import HumanMessage, SystemMessage

chat = ChatOpenAI(model=os.environ.get("LLM_MODELEND"), temperature=0.8, max_tokens=600)

messages = [
    SystemMessage(content="你是一个很棒的智能助手"),
    HumanMessage(content="请给我的花店起个名"),
]
response = chat(messages)
print(response)

总结:

  • 使用 LangChain 可以更轻松地调用 OpenAI 的 Chat 和 Text 模型。
  • SystemMessageHumanMessage 帮助设定对话场景,提升模型输出质量。
  • Chat 模型:适用于多轮对话场景,如智能客服、聊天机器人等。
  • Text 模型:更适合单轮任务,例如生成广告语、产品名称等。