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

吃透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

http://www.xdnf.cn/news/256.html

相关文章:

  • 人工智能学习框架完全指南(2025年更新版)
  • 基于VS Code 为核心平台的python语言智能体开发平台搭建
  • mysql collation_database 参数
  • spring:加载配置类
  • linux如何手动设置域名与 IP 地址的映射关系
  • 深入理解React中的Props与State:核心区别与最佳实践
  • AXOP36061S: 60V 高压单通道运算放大器
  • DemoGen:用于数据高效视觉运动策略学习的合成演示生成
  • PCM 参数深度解析:采样率、帧、缓存大小与多通道关系
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第二模块·语法迁移篇 —— 第六章 函数革命:从过程到方法的重生
  • Yarn的安装及环境配置
  • PS中制作一张扣洞贴图
  • transient关键字深度解析
  • FA-YOLO:基于FMDS与AGMF的高效目标检测算法解析
  • 社保文档智能处理 python实现 谷歌 Gemini回答
  • 物联网分层架构全解析:从感知到应用的智能生态构建
  • Java漏洞原理与实战
  • 单调队列模板cpp
  • servlet-HTTP协议
  • 每日一题(小白)暴力娱乐篇32
  • 数据类型相关问题导致的索引失效 | OceanBase SQL 优化实践
  • 计算机视觉---相机标定
  • Android device PCO (protocol configuration options) intro
  • Node.js 异步调用淘宝 API 实践:高吞吐商品详情数据采集方案
  • 查看matlab函数帮助文档的方法
  • 深入理解synchronized
  • 【Spring JDBC】PreparedStatementCreatorFactory使用流程
  • 生态篇|多总线融合与网关设计
  • 59. 螺旋矩阵 II
  • 【字节跳动AI论文】海姆达尔:生成验证的测试时间扩展