当前位置: 首页 > news >正文

吃透LangChain(五):多模态输入与自定义输出

多模态数据输入

      这里我们演示如何将多模态输入直接传递给模型。我们目前期望所有输入都以与OpenAl 期望的格式相同的格式传递。对于支持多模态输入的其他模型提供者,我们在类中添加了逻辑以转换为预期格式。

      在这个例子中,我们将要求模型描述一幅图像。

import base64
import httpx
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAIimg_url = "https://img0.baidu.com/it/u=3217812679,2585737758&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500"
img_data = base64.b64encode(httpx.get(img_url).content).decode("utf-8")
model = ChatOpenAI(model="gpt-4o")message = HumanMessage(content = [{"type": "text", "text": "用中文描述图片里边的内容和天气"},{"type": "image_url", "image url": {"url": f"data:image/jpeg;base64,{img_data}"}}]
)result = model.invoke([message])
print(result)

输出

这张图片中的天气晴朗,天空呈现明亮的蓝色,并有一些白色云朵点缀。阳光明媚,给大地带来了充足的光照。总体而言,天气非常宜人

多张图片输入

import base64
import httpx
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAIimg_url = "https://img0.baidu.com/it/u=3217812679,2585737758&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500"
img_url1 = "https://img0.baidu.com/it/u=3217812679,2585737758&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500"
model = ChatOpenAI(model="gpt-4o")message = HumanMessage(content = [{"type": "text", "text": "两张图片是否一致?"},{"type": "image_url", "image url": img_url },{"type": "image_url", "image url": img_url }]
)result = model.invoke([message])
print(result)

引用工具

from typing import Literal
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool@tool
def weather_tool(weather: Literal["晴朗的", "多云的", "多雨的", "多雪的"]) -> None:passimg_url = "https://t11.baidu.com/it/u=2838234550,164986307&fm=30&app=106&f=JPEG"
model = ChatOpenAI(model="gpt-4o")
model_with_tool = model.bind_tools([weather_tool])
message = HumanMessage(content = [{"type": "text", "text": "用中文描述图片里边的天气"},{"type": "image_url", "image url": {"url": img_url}},]
)result = model_with_tool.invoke([message])
print(result)

自定义输出:JSON、XML、YAML

如何输出JSON

      虽然一些模型提供商支持内置的方法返回结构化输出,但并非所有都支持。我们可以使用输出解析器来帮助用户通过提示指定任意的 JSON 模式,查询符合该模式的模型输出,最后将该模式解析为JSON。请记住,大型语言模型是有泄漏的抽象!您必须使用具有足够容量的大型语言模型来生成格式良好的JSON.
JsonOutputParser 是一个内置选项,用于提示并解析JSON 输出。虽然它在功能上类似于PydanticOutputParser,但它还支持流式返回部分JSON 对象。
以下是如何将其与 Pydantic 一起使用以方便地声明预期模式的示例:

如何输出XML

XmlOutputParser

如何输出YAML

YamlOutputParser

相关文章:

  • ftok函数 ---- 生成一个唯一的 System V IPC 键值
  • IP检测工具“ipjiance”
  • ProfibusDP转ModbusRTU网关,流量计接入新方案!
  • CentOS系统中排查进程异常终止的日志
  • 标题:民锋视角下的节奏演变逻辑:探寻市场波动的内在秩序
  • 基于 React 和 CodeMirror 实现自定义占位符编辑器
  • 23种设计模式全面解析
  • React 受控表单绑定基础
  • 【HDFS入门】HDFS性能调优实战:从基准测试到优化策略
  • unity TEngine学习记录3
  • 手撕STL——vector
  • 设计模式 --- 装饰器模式
  • 英码科技与泊川软件,携手加速AI与嵌入式系统融合创新
  • Spring-Ioc容器的加载过程?
  • 计算机网络——网络模型
  • JAVA设计模式:注解+模板+接口
  • 极狐GitLab 注册限制如何设置?
  • 23种设计模式-创建型模式之建造者模式(Java版本)
  • 极狐GitLab 外部授权控制机制是怎样的?
  • PHP腾讯云人脸核身获取NONCE ticket
  • 打造“旧书朋友圈”,“淘书乐”为旧书找“新朋友”
  • 上海银行换帅:顾建忠出任党委书记,金煜辞任董事长
  • 视频丨普京称积极对待任何和平倡议
  • 体坛联播|利兹联、伯恩利重返英超,北京淘汰北控队晋级四强
  • 又一名被拐孩子找到!29年后,在警方帮助下云南男子寻子成功
  • 纪念沈渭滨︱沈渭滨先生与新修《清史》