Langchain 中多模态提示词输入

最新大语言的模型,很多都是支持多模态的,通过以下链接查看你使用的模型是否支持多模态。
https://python.langchain.com/docs/integrations/chat/
在这里插入图片描述
在Langchain 中,如果你使用的模型是支持多模态的,Langchain 已经进行了抽象,只需要将图片作为提示词的一个参数即可。

使用网络图片

将网络图片地址传给模型进行解析。

## Gemini
from langchain_google_genai import ChatGoogleGenerativeAI
import base64

model = ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp")
image_url = "https://jiucaigongshe.oss-cn-beijing.aliyuncs.com/merchant/1737530260886dac0b4bf93c598c340ef604f443c2eca.png?x-oss-process=image/auto-orient,1/resize,w_1280/watermark,type_ZmFuZ3poZW5naGVpdGk,size_42,text_6Z-t56C
### 使用 PydanticOutputParser 实现 LangChain 多模态大模型的具体方法 Pydantic 是一种用于数据验证和设置管理的 Python 库,它通过定义清晰的数据结构来帮助开发者处理复杂的输入/输出需求。在 LangChain 中,`PydanticOutputParser` 提供了一种机制,可以将大型语言模型(LLM)的自由文本输出转换为经过验证的 Pydantic 对象[^1]。 以下是关于 `PydanticOutputParser` 在多模态大模型中的具体实现及其示例: #### 1. 安装依赖库 为了使用 `PydanticOutputParser` 和 LangChain 的功能,需要安装必要的依赖项: ```bash pip install langchain pydantic openai ``` --- #### 2. 创建自定义 Pydantic 数据模型 首先,创建一个基于 Pydantic 的数据模型,该模型描述了 LLM 输出应遵循的结构。例如,在一个多模态场景下,假设我们需要解析图像分类的结果以及对应的置信度分数: ```python from pydantic import BaseModel, Field class ImageClassificationResult(BaseModel): """Image classification result with confidence score.""" class_name: str = Field(description="The predicted class name of the image.") confidence_score: float = Field(ge=0, le=1, description="Confidence score between 0 and 1.") ``` 上述代码定义了一个名为 `ImageClassificationResult` 的 Pydantic 模型,其中包含两个字段:`class_name` 表示预测的类别名称;`confidence_score` 则表示置信度得分,并限定其范围为 [0, 1]。 --- #### 3. 配置 PydanticOutputParser 接下来,配置 `PydanticOutputParser` 来解析 LLM 的输出并将其映射到上面定义的 Pydantic 模型上: ```python from langchain.output_parsers.pydantic import PydanticOutputParser parser = PydanticOutputParser(pydantic_object=ImageClassificationResult) ``` 这里实例化了一个 `PydanticOutputParser`,并将目标 Pydantic 类传递给参数 `pydantic_object`。 --- #### 4. 构建 PromptTemplate 并集成 Parser 为了让 LLM 能够理解预期的输出格式,通常会提供一个提示模板 (Prompt Template),其中包括有关所需 JSON 结构的信息。下面是一个例子: ```python from langchain.prompts import PromptTemplate prompt_template = f"""You are an AI assistant that helps classify images. Given a raw text output from another model describing what it sees in an image, your task is to extract structured information about the detected object's class and its associated confidence score. Return your response as valid JSON adhering strictly to this schema: {parser.get_format_instructions()} Raw Text Input: {{input}} JSON Output: """ ``` 注意 `{parser.get_format_instructions()}` 这一部分动态插入了由 `PydanticOutputParser` 自动生成的 JSON Schema 描述,从而指导 LLM 正确生成符合期望格式的内容。 随后构建完整的 PromptTemplate: ```python final_prompt = PromptTemplate( template=prompt_template, input_variables=["input"], partial_variables={"format_instructions": parser.get_format_instructions()} ) ``` --- #### 5. 执行推理过程 最后一步是调用实际的大规模预训练模型完成推断操作,并利用之前设定好的 `PydanticOutputParser` 解析返回值: ```python from langchain.llms import OpenAI llm = OpenAI(model_name="text-davinci-003", temperature=0) raw_input_text = "This appears to be a cat sitting on a chair." formatted_prompt = final_prompt.format(input=raw_input_text) model_output = llm(formatted_prompt) parsed_result = parser.parse(model_output) print(parsed_result.json()) ``` 以上脚本展示了如何从一段自然语言描述中提取出图片分类的相关信息,并最终得到如下形式的标准 JSON 字符串作为结果: ```json { "class_name": "cat", "confidence_score": 0.98 } ``` --- ### 总结 借助于 LangChain 的 `PydanticOutputParser` 工具,能够显著简化复杂业务逻辑下的 LLM 输出后处理流程,同时提高程序健壮性和可读性。此外,这种设计模式还具备良好的灵活性,便于未来扩展至更多类型的多模态应用场景之中[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值