一、大语言模型概述
大语言模型是运用深度学习技术(如神经网络)构建的人工智能模型,其 “大” 体现在参数数量可达数十亿甚至更多,这使其能够理解和生成复杂的语言模式。其训练过程类似 “猜词”,依据大量训练数据(如互联网文本),理解词语、词组用法与含义以及组合形成的意义,通过不断学习调整参数来提升预测准确性。例如给定 “今天的天气真”,模型可预测出 “好”,且不仅基于词语统计关系,还能理解上下文甚至体现世界常识,从而生成或推理相关内容。但需注意,大语言模型并非真正理解语言,只是基于数学函数学习语言模式的概率模型,所以会犯错,产生不合理或偏离主题的输出。
二、LangChain 简介
LangChain 是基于大语言模型预测能力的全方位应用开发工具,具有灵活性与模块化特性,方便调用语言模型并开发新应用。其预构建链功能如乐高积木,新手与经验开发者皆可快速构建项目,模块化组件也允许开发者按需定制功能链条。它支持 Python 和 JavaScript 开发版本,在这次青训营的教程中使用的是 Python 版本。
三、安装 LangChain
基本安装命令为 pip install langchain,但它与多种模型、数据存储库集成时,默认未安装所需依赖项。可使用 pip install langChain [llms] 安装常用开源 LLM 库,安装后还需 pip install --upgrade langChain更新到最新版本。若从源代码安装,则克隆存储库并运行 pip install -e。此外,LangChain 的 GitHub 社区活跃,有大量教程与最佳实践,其 API 文档虽详尽但因较新可能有错误,遇到问题可更新版本或在官方平台提交反馈。
四、OpenAI API
模型类型
- Chat Model:用于人类与 AI 对话,代表模型有 gpt - 3.5 - turbo(ChatGPT)和 GPT - 4 等。不同版本有不同特性,如 gpt - 3.5 - turbo - 0613 是特定时间快照,gpt - 3.5 - turbo - 16k 可接收更长 Token 但未开放使用,且传输字节越多花费越高。
- Text Model:ChatGPT 之前常用,代表作 text - davinci - 003(基于 GPT3),还有 text - embedding - ada - 002 用于文本嵌入,text - similarity - curie - 001 用于相似度比较。
调用方式
-
Text 模型调用步骤:
- 注册 API Key 并安装 OpenAI 库(
pip install openai)。 - 导入 API Key,可通过设置环境变量(如
os.environ["OPENAI_API_KEY"] = '你的 Open API Key')或在代码中指定(openai.api_key = '你的 Open API Key',但此方法不建议),也可将环境变量保存在.env 文件中并使用 python - dotenv 库读取。 - 导入 OpenAI 库并创建 Client(
from openai import OpenAI,client = OpenAI())。 - 指定 gpt - 3.5 - turbo - instruct 模型并调用 completions 方法,设置参数(如 temperature、max_tokens 等),获取返回结果(
response = client.completions.create(...))。 - 打印输出模型返回文字(
print(response.choices[0].text.strip()))。
- 注册 API Key 并安装 OpenAI 库(
-
Chat 模型调用步骤:
- 类似 Text 模型前期步骤,创建 Client 后指定模型(如
model="gpt - 4")。 - 构建 messages 参数,是包含多个消息的列表,每个消息有 role(system、user 或 assistant)和 content。例如
messages=[{"role": "system", "content": "You are a creative AI."},{"role": "user", "content": "请给我的花店起个名"}]。 - 调用 chat.completions.create 方法生成回复(
response = client.chat.completions.create(...))。 - 解析 response 获取模型回复(如
response['choices'][0]['message']['content'])。
- 类似 Text 模型前期步骤,创建 Client 后指定模型(如
Chat 模型与 Text 模型对比
Chat 模型更适合处理对话或多轮次交互,可接受消息列表输入,方便管理对话历史,通过 system 角色设定背景,更好控制输出结果;Text 模型对于简单单轮文本生成任务更简单直接,如仅需根据简单提示生成文本时适用。且 Chat 模型经对齐后输出更像真实聊天场景,如为花店起名,Chat 模型输出完整句子,Text 模型输出多个名字。
五、通过 LangChain 调用 OpenAI 模型
调用 Text 模型
先导入 LangChain 的 OpenAI 类,创建 LLM 对象并指定模型与生成参数(如 llm = OpenAI(model="gpt - 3.5 - turbo - instruct", temperature=0.8, max_tokens=60)),然后使用 predict 方法生成文本(response = llm.predict("请给我的花店起个名")),LangChain 已对输出解析,response 结构更简单。
调用 Chat 模型
导入 LangChain 的 ChatOpenAI 类创建 Chat 模型对象并指定参数(chat = ChatOpenAI(model="gpt - 4", temperature=0.8, max_tokens=60)),从 LangChain 的 schema 模块导入 SystemMessage 和 HumanMessage 类构建消息列表(messages = [SystemMessage(content="你是一个很棒的智能助手"), HumanMessage(content="请给我的花店起个名")]),最后调用 chat 对象的 __call__ 方法生成文本(response = chat(messages))。
通过对这些基础内容的学习,为后续深入探索 LangChain 的更多功能与应用场景奠定了坚实基础,也对大语言模型及 OpenAI API 有了更系统的认识,有助于在实际开发中根据需求合理选择模型与调用方式,利用 LangChain 高效构建应用。