LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能

简介: LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能

背景介绍

引用:

Function Calling是一种允许用户在使用大型语言模型(如GPT系列)处理特定问题时,定制并调用外部函数的功能。这些外部函数可以是专门为处理特定任务(如数据分析、图像处理等)而设计的代码块。通过Function Calling,大模型可以调用这些外部函数获取信息,然后根据这些信息生成相应的输出,从而实现更加复杂和专业化的任务处理能力。

安装依赖

pip install -qU langchain-core langchain-openai

编写代码

这里封装了一些类:加、减、乘、除

通过: llm_with_tools = llm.bind_tools([Add, Multiply, Subtract]) 将它们组合起来,接着交给大模型。

from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI


class Multiply(BaseModel):
    """Multiply two integers together."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")


class Add(BaseModel):
    """Add two integers together."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")


class Subtract(BaseModel):
    """Subtract two integers."""
    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")


llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
llm_with_tools = llm.bind_tools([Add, Multiply, Subtract])

message1 = llm_with_tools.invoke("what's 3 * 12")
print(f"message1: {message1}")

message2 = llm_with_tools.invoke("what's 3 + 12'")
print(f"message2: {message2}")

message3 = llm_with_tools.invoke("what's 3 - 12'")
print(f"message3: {message3}")

运行结果

➜ python3 test17.py
message1: content='3 * 12 is equal to 36.' response_metadata={'finish_reason': 'stop', 'logprobs': None}
message2: content='The result of 3 + 12 is 15.' response_metadata={'finish_reason': 'stop', 'logprobs': None}
message3: content='' additional_kwargs={'tool_calls': [{'id': 'call_aXV9LQfp4COEzB5b93nazfkv', 'function': {'arguments': '// Using the Subtract function from the functions namespace\nfunctions.Subtract({a: 3, b: 12});', 'name': 'python'}, 'type': 'function'}]} response_metadata={'finish_reason': 'tool_calls', 'logprobs': None}

转换函数

我们可以通过工具,将函数转换为JSON的形式

import json
from langchain_core.utils.function_calling import convert_to_openai_tool


def multiply(a: int, b: int) -> int:
    """Multiply two integers together.

    Args:
        a: First integer
        b: Second integer
    """
    return a * b


print(json.dumps(convert_to_openai_tool(multiply), indent=2))

输出结果

➜ python3 test17.py
{
  "type": "function",
  "function": {
    "name": "multiply",
    "description": "Multiply two integers together.",
    "parameters": {
      "type": "object",
      "properties": {
        "a": {
          "type": "integer",
          "description": "First integer"
        },
        "b": {
          "type": "integer",
          "description": "Second integer"
        }
      },
      "required": [
        "a",
        "b"
      ]
    }
  }
}


相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
12月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
3705 1
|
存储 数据采集 监控
什么是数据中台,一文读懂数据中台核心功能
在数字化浪潮下,数据成为企业核心资产。然而,数据分散、质量参差、使用效率低等问题困扰企业发展。数据中台应运而生,作为企业的“中枢神经”,它通过整合、治理、分析和共享数据,打破信息孤岛,提升数据价值,助力企业在营销、风控、产品创新和运营等方面实现数据驱动决策。本文深入解析数据中台的概念、功能、应用场景及建设路径,帮助企业理解如何构建高效的数据能力平台,推动业务增长。
|
人工智能 数据库
智能体(AI Agent)开发实战之【LangChain】(四)结合大模型基于RAG实现本地知识库问答和纠错
本文介绍如何基于RAG实现知识库问答系统的输入内容纠错功能。通过加载本地知识库、构建向量数据库,结合大语言模型对输入文本进行检索比对与纠错优化,提升问答准确性。
|
数据采集 存储 人工智能
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
|
人工智能 自然语言处理 数据挖掘
智能体(AI Agent)开发实战之【LangChain】(三)结合大模型基于RAG实现本地知识库问答优化
智能体(AI Agent)开发实战之【LangChain】(三)结合大模型基于RAG实现本地知识库问答优化
|
SQL 人工智能 自然语言处理
阿里云 CIO 蒋林泉:AI 大模型时代,我们如何用 RIDE 实现 RaaS 的首次落地?
本文整理自阿里云智能集团 CIO 蒋林泉在 AICon 2025 深圳的演讲,分享了阿里云在大模型应用落地中的实践经验。通过多个数字人项目案例,探讨了企业在 AI 应用中的组织转型、业务识别、产品定义与工程落地等关键环节,并提出了 RIDE 方法论(重组、识别、定义、执行),助力企业实现 AI 有效落地。
|
存储 运维 数据挖掘
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
在智能驾驶技术快速发展中,数据成为驱动算法进步的核心。某新能源汽车领军企业基于阿里云Milvus向量数据库构建智能驾驶数据挖掘平台,利用其高性能、可扩展的相似性检索服务,解决了大规模向量数据检索瓶颈问题,显著降低20%以上成本,缩短模型迭代周期,实现从数据采集到场景挖掘的智能化闭环,加速智能驾驶落地应用。
1570 3
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎

热门文章

最新文章