Modal组件及使用技巧

Model 组件的基本组成

Model 是 LangChain 的核心组件,但是 LangChain 本身不提供自己的 LLM,而是提供了一个标准接口,用于封装不同类型的 LLM 进行交互,其中 LangChain 为两种类型的模型提供接口和集成:

  • LLM:使用纯文本作为输入和输出的大语言模型。
  • Chat Model:使用聊天消息列表作为输入并返回聊天消息的聊天模型。

在 LangChain 中,无论是 LLM 亦或者 Chat Model 都可以接受 PromptValue/字符串/消息列表作为参数,内部会根据模型的类型自动转换成字符串亦或者消息列表,屏蔽了不同模型的差异。

对于 Model 组件,LangChain 有一个模型总基类,并对基类进行了划分:

调用大模型最常用的方法为:

  1. invoke: 传递对应的文本提示/消息提示,大语言模型生成对应的内容
  2. batch: invoke的批量版本,可以一次性生成多个内容
  3. stream: invoke的流式输出版本,大语言模版每生成一个字符就返回一个字符

Message组件

在 LangChain 中,Message 是消息组件,并且所有消息都具有 type(类型)、content(内容)、response_metadata(响应元数据)。

LangChain 封装的 Message 涵盖了 5 种类型的消息:

  • SystemMessage
  • HumanMessage
  • AIMessage
  • FunctionMessage
  • ToolMessage

基类及子类如下:

Model组件实例

LLM与ChatModel使用技巧

python 复制代码
from datetime import datetime

import dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

dotenv.load_dotenv()

# 1. 编排prompt
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是OpenAI开发的聊天机器人,请回答用户的问题,现在的时间是{now}"),
    ("human", "{query}")
]).partial(now = datetime.now())

# 创建大语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo-16k")

ai_message = llm.invoke(prompt.invoke({"query": "现在是几点,请讲一个程序员的冷笑话"}))

print(ai_message.type)
print(ai_message.content)
print(ai_message.response_metadata)

Model批处理

python 复制代码
from datetime import datetime

import dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

dotenv.load_dotenv()

# 1. 编排prompt
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是OpenAI开发的聊天机器人,请回答用户的问题,现在的时间是{now}"),
    ("human", "{query}")
]).partial(now = datetime.now())

# 创建大语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo-16k")

ai_messages = llm.batch([
    prompt.invoke({ "query": '你好,你是' }),
    prompt.invoke({ "query": "请将一个关于程序员的冷笑话" })
])

for ai_message in ai_messages:
    print(ai_message.content)
    print("===================")

Model流式输出

python 复制代码
from datetime import datetime

import dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

dotenv.load_dotenv()

# 1. 编排prompt
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是OpenAI开发的聊天机器人,请回答用户的问题,现在的时间是{now}"),
    ("human", "{query}")
]).partial(now = datetime.now())

# 创建大语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo-16k")

response = llm.stream(prompt.invoke({"query":"你能简单介绍下LLM和LLMops吗?"}))

for chunk in response:
    print(chunk.content, flush=True, end='')
相关推荐
Ulyanov2 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:QML 声明式语法与霓虹按钮 —— 当 Python 遇见现代美学
开发语言·python·ui·qml·系统仿真·雷达电子对抗仿真
zh路西法2 小时前
【RDKX5多摄像头模型推理】USB带宽限制与ROS2话题零拷贝转发
linux·c++·python·深度学习
码界筑梦坊2 小时前
113-基于Python的国际超市电商销售数据可视化分析系统
开发语言·python·信息可视化·毕业设计·fastapi
千寻girling3 小时前
五一劳动节快乐 [特殊字符][特殊字符][特殊字符]
java·c++·git·python·学习·github·php
Lucas_coding3 小时前
【CC-Switch】:让 Claude Code 兼容 OpenAI 格式 API
python
技术钱3 小时前
OutputParser输出解析器
linux·服务器·前端·python
Dontla3 小时前
aio-pika介绍(基于asyncio的Python异步消息队列客户端,用于操作RabbitMQ,并实现对AMQP协议支持)
python·rabbitmq·ruby
2401_833033623 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
码界筑梦坊3 小时前
111-基于Python的中国旅游用户数据可视化分析系统
python·信息可视化·django·毕业设计·旅游