构建LangChain应用程序的示例代码:60、探索 OpenAI V1 新功能及其在 LangChain 中的应用

示例展示了OpenAI最新发布的一些重要功能,包括视觉处理、Assistants API、JSON模式、系统指纹等,以及如何在LangChain中使用这些功能。它还介绍了一些与Azure相关的重大变更,以及如何使用工具进行并行函数调用。这些新功能和变更为开发更复杂、更强大的AI应用程序提供了更多可能性。

探索 OpenAI V1 功能

2023年11月6日,OpenAI发布了一些新功能,并将其Python SDK版本升级到1.0.0。示例展示了新功能以及如何在LangChain中使用它们。

# 需要 openai>=1.1.0, langchain>=0.0.335, langchain-experimental>=0.0.39
!pip install -U openai langchain langchain-experimental

# 安装或升级必要的库
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI

# 导入必要的类

视觉功能

OpenAI发布了多模态模型,可以接受文本和图像序列作为输入。

chat = ChatOpenAI(model="gpt-4-vision-preview", max_tokens=256)
chat.invoke(
    [
        HumanMessage(
            content=[
                {
   
   "type": "text", "text": "这张图片显示了什么"},
                {
   
   
                    "type": "image_url",
                    "image_url": {
   
   
                        "url": "https://raw.githubusercontent.com/langchain-ai/langchain/master/docs/static/img/langchain_stack.png",
                        "detail": "auto",
                    },
                },
            ]
        )
    ]
)

# 创建一个支持视觉功能的ChatOpenAI实例
# 使用模型处理包含文本和图像的消息

OpenAI assistants

Assistants API允许您在自己的应用程序中构建AI助手。Assistant有指令,可以利用模型、工具和知识来响应用户查询。Assistants API目前支持三种类型的工具:代码解释器、检索和函数调用。

您可以使用OpenAI工具或自定义工具与OpenAI Assistants交互。当仅使用OpenAI工具时,您可以直接调用assistant并获得最终答案。当使用自定义工具时,您可以使用内置的AgentExecutor运行assistant和工具执行循环,或轻松编写自己的执行器。

以下我们展示了与Assistants交互的不同方式。作为一个简单的例子,让我们构建一个可以编写和运行代码的数学辅导员。

仅使用OpenAI工具

from langchain.agents.openai_assistant import OpenAIAssistantRunnable

# 导入OpenAIAssistantRunnable类
interpreter_assistant = OpenAIAssistantRunnable.create_assistant(
    name="langchain assistant",
    instructions="你是一个个人数学辅导员。编写并运行代码来回答数学问题。",
    tools=[{
   
   "type": "code_interpreter"}]
<think>好的,我需要解决用户提到的LangChainDeprecationWarning警告问题,特别是如何更新代码以避免这些警告,并将langchain.pydantic_v1替换为pydantic.v1。首先,我得了解用户遇到的问题具体是什么。 用户提到两个弃用警告:一个是LLMChain类在0.1.17版本被弃用,将在0.3.0移除,建议使用RunnableSequence,比如prompt | llm;另一个是Chain.run方法在0.1.0被弃用,建议改用invoke方法。此外,用户还想将导入的langchain.pydantic_v1替换为pydantic.v1。 首先,我需要确认LangChain的最新版本中的变化。根据LangChain的更新日志,从0.1.x版本开始,部分模块被重构,特别是为了兼容Pydantic v2,LangChain可能引入了自己的兼容层,比如langchain.pydantic_v1,但现在用户希望直接使用pydantic.v1。这可能涉及到导入路径的调整。 对于LLMChain的弃用问题,用户需要将原有的LLMChain实例化方式改为使用RunnableSequence。原来的代码可能是这样的: from langchain.chains import LLMChain chain = LLMChain(llm=llm, prompt=prompt) response = chain.run(input="...") 根据警告信息,应该改为使用RunnableSequence,这可能涉及将prompt和llm通过管道操作符连接起来,例如: chain = prompt | llm response = chain.invoke(input="...") 但具体语法可能需要参考最新的LangChain文档。另外,旧代码中的.run()方法需要替换为.invoke(),这是方法调用的改变。 关于pydantic_v1的替换,用户需要检查代码中是否有从langchain.pydantic_v1导入的模块,比如BaseModel或Field。正确的做法是直接从pydantic.v1导入: # 旧代码 from langchain.pydantic_v1 import BaseModel, Field # 新代码 from pydantic.v1 import BaseModel, Field 此外,还需要确保环境中安装了正确版本的pydantic,可能需要pydantic>=1.10.0但小于2.0.0,或者根据LangChain的要求进行调整。 接下来,我需要验证这些修改是否有效。例如,将LLMChain替换为RunnableSequence后,是否还能正确运行,输入输出的处理是否有变化。同时,检查替换pydantic导入后,模型的定义是否仍然有效,是否有其他依赖问题。 可能还需要考虑其他被弃用的类或方法,例如是否还有其他链(Chain)的子类需要调整,或者是否有其他模块的导入路径发生了变化。用户可能需要全面检查代码中所有涉及弃用警告的地方,逐一进行更新。 最后,建议用户查阅官方迁移指南或更新日志,以确保代码的其他部分也符合最新版本的要求。同时,测试修改后的代码,确保功能正常,没有引入新的错误。</think>### 逐步解决方案:解决LangChain弃用警告及代码更新 #### 1. **替换`LLMChain`为`RunnableSequence`** - **旧代码**: ```python from langchain.chains import LLMChain chain = LLMChain(llm=llm, prompt=prompt) response = chain.run(input="...") ``` - **新代码**: ```python # 使用管道操作符组合Prompt和LLM chain = prompt | llm response = chain.invoke(input={"...": "具体输入变量"}) ``` - **说明**:新的`RunnableSequence`通过`|`操作符连接组件,不再需要显式实例化`LLMChain`[^2]。 #### 2. **替换`.run()`方法为`.invoke()`** - **旧代码**: ```python result = chain.run(input="问题") ``` - **新代码**: ```python result = chain.invoke(input={"input": "问题"}) # 输入需按Prompt模板变量命名 ``` - **说明**:`.invoke()`方法需要输入与Prompt模板变量匹配的字典。 #### 3. **更新Pydantic导入路径** - **旧代码**: ```python from langchain.pydantic_v1 import BaseModel, Field ``` - **新代码**: ```python from pydantic.v1 import BaseModel, Field # 直接使用pydantic的v1兼容层 ``` - **验证**:确保安装的`pydantic`版本支持v1(例如`pydantic>=1.10.0,<2.0.0`)。 #### 4. **完整示例代码** ```python from langchain.prompts import PromptTemplate from langchain_openai import OpenAI # 假设使用OpenAI模型 from pydantic.v1 import BaseModel, Field # 定义Prompt模板 prompt = PromptTemplate.from_template("回答以下问题:{question}") # 初始化LLM llm = OpenAI() # 构建链 chain = prompt | llm # 调用链 response = chain.invoke({"question": "如何修复LangChainDeprecationWarning?"}) print(response) ``` #### 5. **验证与调试** - **检查依赖版本**: ```bash pip install "langchain>=0.1.0" "pydantic>=1.10.0,<2.0.0" ``` - **处理兼容性问题**:若代码中使用了其他LangChain模块(如`VectorStore`),需检查是否需同步更新语法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hugo_Hoo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值