关键亮点
它做什么:执行实时数据检索、系统操作和自动化工作流程。
哪些型号支持它: Llama 3 系列、GPT 系列、Gemma 2 和 Mistral nemo。
如何实施: 通过安装 API Novita AI “模型库”,然后用 Langchain 框架实现。
函数调用是一种显著增强大型语言模型能力的技术(LLMs)使它们能够与外部世界互动。它们不仅仅是生成文本, LLM可以利用函数调用来执行特定任务、访问实时信息以及执行复杂操作。本文将探讨函数调用的概念、它的实际应用,以及像 Llama 3.3 70B 这样的模型如何使其更易于访问。
函数调用可以解决哪些问题?
- 实时信息访问
- 查看最新股票价格
- 获取当前天气数据
- 获取突发新闻
- 系统交互
- 发电子邮件
- 在社交媒体上发布
- 查询和写入数据库
- 工作流程自动化
- 数据抓取和处理
- 多步骤任务执行
- 复杂分析自动化
- 资料准确度
- 确保信息及时性
- 提供精准的查询结果
- 减少过时数据错误
什么是函数调用?
函数调用的核心是 LLM 识别特定任务何时需要外部函数或工具,然后输出结构化数据(通常为 JSON 格式)来执行该函数。这些结构化数据包含函数名称和所有必要的参数。本质上,函数调用充当了 AI 广博知识与实际操作之间的桥梁。它使 AI 代理或聊天机器人能够执行特定任务或访问外部数据和服务。
函数调用支持的模型
更多来自Google的 LLM和平台现在支持函数调用。您可以通过“模型库”页 Novita AI,并通过langchain实现函数调用。

- 骆驼 3.3: 70 亿参数版本在函数调用测试中表现出色,能够根据用户请求成功识别何时调用哪些函数。
- 西北风: Mistral-Large-2 等模型在 watsonx.ai 等环境中的函数调用中表现出了成功。
- 双子座: Google 的 Gemini 模型也支持函数调用,并提供各种使用示例。
函数调用如何工作?
- 函数声明: 该过程从定义可重复使用的代码块(称为函数)开始,并描述它们的功能、输入和输出。
- 及时提交: 用户向 LLM 以及一组函数声明。这将告知模型可用的工具。
- 模型分析: 此 LLM 分析提示并确定是否需要调用任何提供的函数来完成请求。
- 结构化输出: 如果需要函数调用, LLM 生成 JSON 格式的结构化输出,其中包括函数名称及其参数的值。
- 函数调用: 应用程序或系统使用此结构化输出来调用指定的函数,同时传递参数。
- 函数执行: 外部服务或 API 使用提供的参数执行该功能。
- 输出响应: 外部服务将确认或结果发送回人工智能。
- 模型响应: 此 LLM 然后使用该输出为用户生成自然语言响应或进行进一步处理。
- 请注意,模型不会直接调用该函数;相反,其结构化输出由外部程序使用来执行此操作。
函数调用 vs. JSON 模式

函数调用的好处
- 提高效率: 直接调用函数可以加快处理时间并减少延迟,这对于需要立即采取行动的应用程序至关重要。
- 增强的灵活性: 开发人员可以轻松更新或修改功能,而无需彻底修改整个应用程序,从而能够更快地适应新需求。
- 可扩展性: 无需对现有基础设施进行大量更改即可添加新功能,从而实现可扩展性。
- 个性化互动: 允许个性化的用户体验;例如,访问用户的日历以建议与现有约会不冲突的会议时间。
- 连接人工智能和现实世界的行动: 使人工智能能够代表用户执行诸如发送电子邮件或短信之类的实际任务。
- 复杂对话代理: 可以创建复杂的聊天机器人,使用外部 API 和知识库来回答复杂的问题以获得相关的响应。
函数调用的实际应用
- 对话代理: 用于利用外部 API 获取最新信息的高级聊天机器人。
- 自然语言理解: 从文本中提取结构化数据,用于实体识别和情感分析等任务。
- API整合: 启用 LLM与外部 API 集成以获取数据或根据用户输入执行操作。
- 经济支援: 构建人工智能财务顾问,访问实时财务数据并提供个性化建议。
- 支持票证自动化: 通过使用上下文感知规则处理票证来自动执行支持票证分配。
- 知识检索: 通过创建总结学术文章以回答问题和提供引用的功能,帮助从知识库中检索信息。
- 多模式应用: 根据图像、视频、音频和 PDF 触发功能。
如何使用 Llama 3.3 70B 函数调用 Novita AI
步骤1:获取API密钥并安装!
进入“密钥管理”页面,您可以复制 API密钥 如图所示。

你可以找到 “模型库“ 的页面 Novita AI. 安装 Novita AI 使用特定于您的编程语言的包管理器的 API。

注册后, Novita AI 提供 0.5 美元的信用额度来帮助您入门!
如果免费积分用完,您可以付费继续使用。
第一步: 使用 Langchain 实现函数调用
我们将创建一个可以执行加法和乘法运算的简单数学应用程序。
💡 虽然本指南为了方便使用了 LangChain,但实现函数调用并不需要任何特定的框架。关键在于设计正确的提示符,使模型能够理解并正确调用函数。这里使用 LangChain 只是为了简化实现。
硬件需求
首先,安装所需的软件包:
pip install langchain-openai python-dotenv
设置 环境
创建一个 .env 在您的项目根目录中添加您的 Novita AI API密钥:
NOVITA_API_KEY=your_api_key_here
实施步骤
1. 定义工具
首先,让我们使用 LangChain 的 @tool 装饰器:
from langchain_core.tools import tool
@tool
def multiply(x: float, y: float) -> float:
"""Multiply two numbers together."""
return x * y
@tool
def add(x: int, y: int) -> int:
"""Add two numbers."""
return x + y
tools = [multiply, add]
2.创建工具执行函数
接下来实现一个函数来执行这些工具:
from typing import Any, Dict, Optional, TypedDict
from langchain_core.runnables import RunnableConfig
class ToolCallRequest(TypedDict):
name: str
arguments: Dict[str, Any]
def invoke_tool(
tool_call_request: ToolCallRequest,
config: Optional[RunnableConfig] = None
):
"""Execute the specified tool with given arguments."""
tool_name_to_tool = {tool.name: tool for tool in tools}
name = tool_call_request["name"]
requested_tool = tool_name_to_tool[name]
return requested_tool.invoke(tool_call_request["arguments"], config=config)
3. 设置 LangChain 管道
创建一个使用 Novita AI“ LLM 选择并准备工具调用:
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import render_text_description
def create_chain():
"""Create a chain that uses the specified LLM model to select and prepare tool calls."""
model = ChatOpenAI(
model="meta-llama/llama-3.3-70b-instruct",
api_key=os.getenv("NOVITA_API_KEY"),
base_url="https://api.novita.ai/v3/openai",
)
rendered_tools = render_text_description(tools)
system_prompt = f"""\
You are an assistant that has access to the following set of tools.
Here are the names and descriptions for each tool:
{rendered_tools}
Given the user input, return the name and input of the tool to use.
Return your response as a JSON blob with 'name' and 'arguments' keys.
The `arguments` should be a dictionary, with keys corresponding
to the argument names and the values corresponding to the requested values.
"""
prompt = ChatPromptTemplate.from_messages(
[("system", system_prompt), ("user", "{input}")]
)
return prompt | model | JsonOutputParser()
4.创建主处理函数
实现处理数学查询的主要函数:
def process_math_query(query: str):
"""Process a mathematical query by using an LLM to select the appropriate tool and execute it."""
chain = create_chain()
message = chain.invoke({"input": query})
result = invoke_tool(message, config=None)
return message, result
5. 使用示例
以下是如何使用该实现:
if __name__ == "__main__":
message, result = process_math_query(
"meta-llama/llama-3.3-70b-instruct",
"what's 3 plus 1132"
)
print(result) # Output: 1135
总而言之,函数调用正在迅速改变 AI 系统与环境交互的方式,从而催生出更实用、更高效、更人性化的应用程序。像 Llama 3.3 70B 这样的模型正在为更便捷地使用这项强大的技术铺平道路,为 AI 开发开辟无限可能。
常見問題解答
函数调用是一种技术,它允许大型语言模型识别特定任务何时需要外部函数或工具,并生成结构化数据来执行该函数。
主要优点包括提高处理任务的效率、增强开发人员轻松更新功能的灵活性、无需进行大量更改即可添加新功能的可扩展性以及个性化的用户交互。
英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语
诺维特人工智能 是一个 AI 云平台,它为开发人员提供了一种使用我们简单的 API 轻松部署 AI 模型的方法,同时还提供经济实惠且可靠的 GPU 用于构建和扩展的云。
推荐阅读
探索 Novita 的更多内容
订阅即可将最新帖子发送到您的电子邮箱。




