构建LangChain应用程序的示例代码:49、如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统

! pip install "openai>=1" "langchain>=0.0.331rc2" matplotlib pillow

加载图像

我们将图像编码为 base64 字符串,如 OpenAI GPT-4V 文档中所述。

import base64
import io
import os

import numpy as np
from IPython.display import HTML, display
from PIL import Image

def encode_image(image_path):
    """获取图像的 base64 字符串"""

    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

def plt_img_base64(img_base64):
    """显示 base64 图像"""

    # 使用 base64 字符串创建 HTML img 标签
    image_html 
<think>好的,用户想了解如何通过LangChain实现AI智能体,特别是教程中的实验三。首先,我需要回忆一下LangChain的基本概念构建智能体的流程。根据引用[4],LangChain可以用来构建智能体,并提到了使用Tavily检索工具。用户可能希望知道具体的步骤代码示例。 接下来,我需要确定实验三可能涵盖的内容。通常教程中的实验三可能涉及多工具协同或更复杂的逻辑。结合引用[3],提到基于llama3Phi-3-Vision的实践,可能涉及多模态处理。但用户的问题更关注LangChain本身,可能需要聚焦在基本智能体的构建步骤。 然后,考虑用户提供的引用内容。引用[4]提到了使用TavilySearchResults工具,需要注册API密钥。所以构建智能体的第一步是配置环境变量,导入必要的模块。接着需要初始化语言模型,比如使用ChatOpenAI,然后定义工具,比如搜索工具。然后创建智能体,并运行它。 用户可能需要详细的步骤说明代码示例。根据引用[1],教程需要详细,确保代码正确。同时,引用[2]提到调教AI代码衔接大模型与业务,所以需要强调如何将工具与大模型结合。 需要检查是否有遗漏的步骤,比如智能体的类型(如ZERO_SHOT_REACT_DESCRIPTION),以及执行过程中可能遇到的问题,比如API密钥的设置。另外,引用[3]中的多模态可能需要额外处理,但用户的问题可能不需要涉及,除非实验三特别要求。 最后,生成相关问题时要围绕LangChain构建智能体的扩展,比如性能优化、多模态集成、工具开发等,参考已有的引用内容中的关键词。</think>以下是如何通过LangChain构建AI智能体的分步教程,结合实验三的核心内容: ### 一、LangChain构建AI智能体基础步骤 1. **环境配置** ```python # 安装依赖 !pip install langchain openai tavily-python # 设置API密钥(示例) import os os.environ["OPENAI_API_KEY"] = "sk-xxx" os.environ["TAVILY_API_KEY"] = "tvly-xxx" ``` 2. **工具与模型初始化** ```python from langchain_openai import ChatOpenAI from langchain_community.tools import TavilySearchResults from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate llm = ChatOpenAI(model="gpt-3.5-turbo") tools = [TavilySearchResults(max_results=1)] ``` 3. **智能体构建** ```python prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个能使用搜索工具回答问题的助手"), ("user", "{input}"), ("placeholder", "{agent_scratchpad}") ]) agent = create_tool_calling_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) ``` 4. **执行查询** ```python response = agent_executor.invoke({ "input": "2024年诺贝尔奖获得者有哪些最新进展?" }) print(response["output"]) ``` 输出示例: ``` > 调用Tavily搜索"2024诺贝尔奖最新进展"... > 根据搜索结果,2024年诺贝尔生理学或医学奖授予了... ``` ### 二、实验三核心技术解析 1. **多工具协同机制** - 可添加多个工具实现复合能力: ```python from langchain_community.tools import WikipediaQueryRun from langchain_community.utilities import WikipediaAPIWrapper wiki_tool = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()) tools += [wiki_tool] ``` 2. **记忆增强实现** ```python from langchain.chains import ConversationChain from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() agent_executor = AgentExecutor( agent=agent, tools=tools, memory=memory, verbose=True ) ``` 3. **响应格式控制** 通过输出解析器确保结构化返回: ```python from langchain.output_parsers import StructuredOutputParser from langchain_core.prompts import PromptTemplate parser = StructuredOutputParser.from_response_schemas(...) prompt = PromptTemplate( template="...{format_instructions}...", partial_variables={"format_instructions": parser.get_format_instructions()} ) ``` ### 三、关键优化技巧 1. **提示工程优化** ```python system_prompt = """你是一个专业研究员,需要遵守: 1. 优先使用Tavily搜索最新信息 2. 使用Wikipedia验证历史背景 3. 对矛盾信息标注来源""" ``` 2. **错误处理机制** ```python from langchain.schema import AgentAction, AgentFinish def handle_error(error): return AgentFinish( return_values={"output": f"执行失败:{str(error)}"}, log=str(error) ) ``` [^1]: 通过持续学习实践,你将能够充分利用LangChain的强大功能[^1] [^2]: 大模型应用技术架构代码示例展示了如何将大模型业务衔接[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo_Hoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值