news 2026/10/2 12:38:17

content和content_blocks的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
content和content_blocks的使用

消息属性:content、content_blocks

content

消息的 content 可以理解为数据内容,它是弱类型的,既支持字符串,也支持列表(列表元素通常为字典)。

举例1:存储字符串

如果只是纯文本内容,直接传递字符串即可。

from langchain.messagesimportHumanMessage msg1=HumanMessage(content="你好啊")msg2=HumanMessage("你好啊")print(msg1)print(msg2)

说明:当 content 内容只有字符串时,可以省略参数名称。

举例2:存储字典列表

如果需要发送的不只是文本,例如多模态内容,则需要使用 content 的字典列表形式。
字典内容需遵循模型供应商的 API 规范,以 openai:gpt-4.1 为例:
参考官方文档:https://developers.openai.com/api/reference/python/resources/chat/subresources/completions/methods/create

或

https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create?site_locale=en

测试代码:

importbase64 from langchain.chat_modelsimportinit_chat_model from langchain.messagesimportHumanMessage from dotenvimportload_dotenvimportos load_dotenv(override=True)model=init_chat_model(model="gpt-5.4-mini",model_provider="openai",api_key=os.getenv("CLOSEAI_API_KEY"),base_url=os.getenv("CLOSEAI_API_BASE"))def encode_image(img_path,img_type='jpeg'):"""将一张本地图片转换成 Base64 编码的 Data URI 字符串,方便在文本中嵌入图片数据""" with open(img_path,"rb")as img_file:returnf"data:image/{img_type};base64,{base64.b64encode(img_file.read()).decode("utf-8")}"# 图像路径img_path="D:\\workspace_pycharm_llm\\chapter022_model\\img.png"# 获取图像base64编码字符串base64_image=encode_image(img_path)response=model.invoke([HumanMessage(content=[{'type':'text','text':'这张图里有什么?'},{'type':'image_url',"image_url":base64_image,}])])print(response.content)

content_blocks

在LangChain1.x中,content_blocks是消息对象(BaseMessage)的一项重大升级。它的核心目标是提供一种跨模型供应商、标准化的多模态数据结构。

过去、处理图片、音频、甚至是模型生成的“思维链内容时”,不同供应商的API格式各异,导致开发者需要写大量的适配代码。content_blocks的出现终结了这种混乱。

在LangChain1.2版本中,消息对象的content属性依然存在(为了向前兼容),但新增了content_blocks属性,可以将content解析为标准、类型安全的表示。

  1. 数据结构:它是一个list[TypedDict]
  2. 统一格式:每个block都有一个type字段,用于区分内容类型
  3. 支持类型:包括text(文本),image(图片),audio(音频),video(视频)、tool_call(工具调用)以及reasoning(推理/思维链)

输入格式化

对于复杂的对话(带图片或工具结果),建议使用content_blocks列表形式构建HumanMessage或AIMessage

借助content_blocks,我们可以用一套标准代码,无缝地在不同厂商的模型之间切换。

输出格式化

content_blocks还可用于输出格式化,以deepseek官网的deepseek-v4-flash为例,其输出包含思考内容,后者位于additional_kwargs的reasoning_content字段下。比如:

不同的模型其输出格式可能不同,仅为提取思考内容,切换模型都可能需要更改代码,非常不方便。content_blocks提供了统一的输出格式,可以将不同格式的响应统一为标准格式。

注意:content_blocks是懒加载的,即调用时才会解析

说明:优先检查response.content_blocks而不是response.content,特别是当你需要获取“思维链”或者“引用”信息时。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 12:38:02

河南本地无人机执照考试点合作机构——羽翼,提供教员等级培训与教员资质续签服务,同时开放周末体验班供爱好者入门

河南无人机行业发展与本地考证培训机遇低空经济已成为国家层面重点培育的战略性新兴产业,无人机在农林植保、电力巡检、应急救援、测绘航拍、物流配送等领域的应用持续深化,行业对持证飞行的合规要求也日益严格。根据中国民航局相关规定,从事…

作者头像 李华
网站建设 2026/10/2 12:35:35

展鸿电力客户评价如何,口碑好不好

立足湾区产业浪潮,锚定电力服务新方向当前,粤港澳大湾区产业升级步伐持续加快,制造业集群不断发展壮大,企业生产规模扩张、新能源转型加速,对稳定、安全、高效的供配电体系提出了更高要求。从传统制造企业的配电扩容升…

作者头像 李华
网站建设 2026/10/2 12:31:50

Cyber Weekly #83

赛博新闻 1、Anthropic 发布 Claude Opus 5.5:更强也更便宜的 5.5 家族首款模型 Anthropic 上周二发布 Claude Opus 5.5,全新 Claude 5.5 家族的首款模型,官方称其接近旗舰 Fable 5.1:Terminal-Bench 4.0 智能体编程 66.4%、GDPv…

作者头像 李华
网站建设 2026/10/2 12:30:57

OpenHands 技术分析与规划:用 TaoToken 统一 Key 打通本地开发链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华