构建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"}]
### LangChain 中 Pydantic 的用途和作用 #### 背景概述 Pydantic 是一种基于 Python 的数据验证和设置管理工具,能够帮助开发者轻松实现复杂的数据校验逻辑。在 LangChain 中,Pydantic 主要用于处理非结构化输入并将其转换为结构化输出,从而提高模型的可靠性和一致性[^4]。 --- #### 功能介绍 1. **数据验证** - Pydantic 提供了强大的数据验证能力,可以确保传入的数据符合预期格式。这在 LangChain 中尤为重要,因为许多操作依赖于从外部源获取的数据(如用户输入、API 响应等),这些数据可能并不总是完全可信。 - 例如,在构建一个文本分类系统时,可以使用 Pydantic 来定义输入字段及其约束条件,从而减少因错误数据引发的问题[^3]。 2. **类型提示支持** - Pydantic 支持现代 Python 的类型提示语法 (Type Hint),使得代码更加清晰易懂。这种特性不仅有助于静态分析工具检测潜在问题,还能够让开发团队更高效地协作。 3. **与 LLM 输出结合** - 在 LangChain 中,LLM 经常会产生自由形式的回答,而这些回答通常需要进一步加工才能满足实际应用需求。为此,LangChain 引入了一个名为 `PydanticOutputParser` 的组件,专门用来解析来自大语言模型的结果,并按照预设模式重新组织成易于消费的形式[^4]。 4. **跨版本兼容性优化** - 随着时间推移,Pydantic 不断迭代升级至第二版(v2)。为了保障现有项目的平稳过渡以及未来扩展可能性,LangChain 设计了自己的适配机制允许同时运行基于旧标准(即 v1)的新功能实例;不过出于长期考虑仍推荐尽早迁移到最新框架之上以享受更多改进成果[^2]。 --- #### 使用方法示例 以下是关于如何在 LangChain 中运用 Pydantic 创建自定义链路的具体例子: ```python from langchain.prompts import PromptTemplate from langchain.llms import OpenAI from pydantic import BaseModel, Field from typing import Optional class SentimentAnalysis(BaseModel): sentiment: str = Field(..., description="The overall emotion conveyed by the text.") aggressiveness: int = Field(default=0, ge=0, le=5, description="Level of aggression detected on scale 0-5.") language: Optional[str] = Field(None, description="Detected primary language used within input.") llm = OpenAI() template = """Analyze following sentence and determine its sentiment along with any signs of aggressive tone. Text:{text}""" prompt_template = PromptTemplate(input_variables=["text"], template=template) def analyze_sentiment(text: str) -> dict: response = llm(prompt_template.format(text=text)) try: result = SentimentAnalysis.parse_raw(response) return {"success": True, "data": result.dict()} except Exception as e: return {"success": False, "error_message": f"Parsing failed due to {str(e)}"} # Example Usage example_input = "Estoy muy enojado con vos!" output = analyze_sentiment(example_input) print(output) ``` 此脚本展示了怎样借助 Pydantic 定义特定领域内的实体类——这里指代情绪分析报告(SentimentAnalysis),并通过调用大型人工智能服务获得相应解读结果后再加以检验确认其合规状况。 --- ### 总结 综上所述,Pydantic 在 LangChain 生态体系里扮演着不可或缺的角色,无论是基础层面的数据清洗还是高级别的业务流程自动化都离不开它的身影。掌握好这一技能无疑会极大提升工作效率的同时也增强了系统的健壮程度。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hugo_Hoo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值