在这里插入图片描述

1、消息类型

from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

response =agent.invoke({
    "messages": [
        # {"role": "system", "content": "你是一个天气助手。"},
        # {"role": "user", "content": "吉林天气如何?"},
        # {"role": "assistant", "content": "天气晴朗,温度为25摄氏度"},
        # {"role": "user", "content": "北京天气如何"},

		#替换掉上面的
        SystemMessage(content="你是一个天气助手。"),
        HumanMessage(content="北京天气如何"),
        AIMessage(content="天气晴朗,温度为25摄氏度"),
    ]
})

#更好看的打印
for message in response["messages"]:
    message.pretty_print()

在这里插入图片描述
在这里插入图片描述

2、多模态消息

2.1在线图片

from langchain.chat_models import init_chat_model
import os
from dotenv import load_dotenv
load_dotenv()

#要使用支持多模态的大模型
model = init_chat_model(
    model="qwen3.5-omni-plus",
    model_provider="openai",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key=os.getenv("OPENAI_API_KEY"),
)

agent =create_agent(model)

#准备多模态消息
message=HumanMessage([
    {"type": "text", "text": "描述图片"},
    {"type": "image", "url": "https://pic4.zhimg.com/v2-c34c61a90095abb8713de9d1dca7ec7b_r.jpg"},
])

#流式输出
stream =agent.stream(
    {"messages": [message]},
    stream_mode="messages"
)
for chunk,metadata in stream:
    if chunk.content:
        print(chunk.content,end="")

2.2本地图片

#模拟前端上传
! pip install ipywidgets

#这样会出现一个上传的按钮
from ipywidgets import FileUpload
from IPython.display import display
upload=FileUpload(accept="*",multiple=False)
display(upload)

print(upload.value)


#读取图片,转为64字符串
import base64
#获取第一个上传的文件
#uploader.value 是一个字典(文件名→文件信息),而不是列表,所以 uploader.value[0] 会报 KeyError: 0。 正确的索引方式应该是通过字典的键或 list() 转换。
uploaded_file = list(uploader.value.values())[0]   
#获取内存视图
content_mv=uploaded_file["content"]
#转换内存视图->字节
img_bytes=bytes(content_mv)
#base64编码
im_b64=base64.b64encode(img_bytes).decode("utf-8")


#组织多模态消息
message=HumanMessage(content=[
    {
        "type": "image",
        "base64": im_b64,
        "mime_type": "image/jpeg",
    },
    {"type": "text", "text": "描述图片"},
])
for chunk,metadata in agent.stream(
    {"messages": [message]},
    stream_mode="messages"
):
    print(chunk.content,end="")

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐