API 在 AI 应用中的核心角色:从Function Calling 到MCP 的技术演进
在当前的 AI 技术栈中,API(应用程序编程接口)的地位已经从“辅助工具”上升为“核心基础设施”。大模型本身具备理解和生成能力,但要让 AI 真正完成实际任务——查询数据、操作业务系统、触发外部服务——必须依赖 API 与外部世界交互。本文从技术视角梳理 API 在 AI Agent、模型接入、企业集成中的关键作用,并给出具体的实现方式与代码示例,帮助开发者理解这一层的基础能力。
1. AI Agent 的“执行层”:Function Calling 与工具调用
AI Agent(智能体)的核心能力在于自主规划并执行任务。当用户提出“帮我预订今晚7点的餐厅”时,Agent 需要拆解步骤:搜索餐厅、查询营业时间、调用预订 API。这个过程的关键环节是函数调用(Function Calling):大模型根据用户输入和预定义的工具列表,决定调用哪个函数、传什么参数,然后由外部代码执行实际 API 请求,再将结果返回给模型整合。
1.1 Function Calling 的工作流程
以 OpenAI 的 Function Calling 为例,典型流程如下:
-
定义工具:告诉模型有哪些可调用的函数,以及函数的参数 schema。
-
模型决策:模型根据对话上下文,输出一个“函数调用”请求,包含函数名和参数。
-
执行函数:开发者在本地执行对应函数(通常是调用第三方 API)。
-
返回结果:将函数执行结果以消息形式回传给模型,模型生成最终回答。
1.2 代码示例:使用 OpenAI SDK 实现天气查询 Agent
import openai
import json
# 定义可调用的工具
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,例如:北京"
}
},
"required": ["city"]
}
}
}
]
def get_weather(city: str) -> str:
"""模拟调用天气 API"""
# 实际场景中这里会请求天气服务接口
return f"{city} 今天晴,气温 25°C"
def run_agent(user_query: str):
client = openai.OpenAI()
messages = [{"role": "user", "content": user_query}]
# 第一次调用:让模型决定是否调用工具
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
messages.append(message)
# 检查是否有工具调用
if message.tool_calls:
for tool_call in message.tool_calls:
if tool_call.function.name == "get_weather":
args = json.loads(tool_call.function.arguments)
city = args["city"]
weather_result = get_weather(city)
# 将结果回传给模型
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": weather_result
})
# 第二次调用:生成最终回答
final_response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
return final_response.choices[0].message.content
return message.content
# 测试
print(run_agent("北京今天天气怎么样?"))
这段代码展示了 Function Calling 的完整闭环。开发者可以轻松将任何外部 API(如支付、物流、数据库查询)包装成工具函数,让 AI Agent 自主调用。
2. API 的三种关键模式:统一接入、MCP、API 网关
随着 AI 应用复杂化,API 连接方式也在演进,主要有三种模式:统一 API 聚合、MCP 协议、API 网关。
2.1 统一 API 接入:一个接口调用多个模型
不同模型厂商(OpenAI、Anthropic、Google 等)的 API 格式差异较大,逐一对接维护成本高。统一 API 聚合平台通过提供标准化的接口,屏蔽底层模型差异,允许开发者用同一套代码调用多个模型。
技术要点:
-
提供统一的
/v1/chat/completions风格接口。 -
支持模型路由、负载均衡、故障转移。
-
实现方式:在聚合层解析请求,转换为各厂商原生格式。
示例:使用 LiteLLM 统一调用不同模型
from litellm import completion
# 统一接口,传入不同模型名
response = completion(
model="gpt-4o", # 或 "claude-3-5-sonnet", "gemini-1.5-pro"
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
LiteLLM 是一个开源库,可以将多个模型 API 统一为 OpenAI 格式。生产环境中也可以使用类似的 API 网关(如 OpenRouter、Vercel AI Gateway)实现统一接入。
2.2 MCP 协议:标准化的工具连接接口
MCP(Model Context Protocol)由 Anthropic 发起,目标是解决 AI 与外部工具连接的碎片化问题。它定义了一套标准协议,让 AI 应用能以统一的方式发现和调用各种工具(API)。
MCP 的核心组件:
-
MCP Server:包装具体工具或数据源,暴露标准接口。
-
MCP Client:AI 应用通过客户端连接 Server,自动发现可用工具。
-
传输层:支持 stdio、HTTP/SSE 等。
示例:一个简单的 MCP Server(Python)
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import asyncio
# 创建 MCP Server
server = Server("example-server")
@server.list_tools()
async def handle_list_tools():
"""声明可用工具"""
return [
{
"name": "get_time",
"description": "获取当前服务器时间",
"inputSchema": {
"type": "object",
"properties": {}
}
}
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict):
"""处理工具调用"""
if name == "get_time":
from datetime import datetime
return {"content": [{"type": "text", "text": datetime.now().isoformat()}]}
raise ValueError(f"Unknown tool: {name}")
async def main():
from mcp.server.stdio import stdio_server
async with stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="example-server",
server_version="0.1.0",
capabilities=server.get_capabilities(
notification_options=NotificationOptions(),
experimental_capabilities={}
)
)
)
if __name__ == "__main__":
asyncio.run(main())
示例:使用 Nginx 或专用网关配置简单路由
以 Higress(阿里云开源的 AI 网关)为例,配置一个简单的 AI 代理:
apiVersion: networking.higress.io/v1
kind: McpBridge
metadata:
name: default
spec:
registries:
- name: my-services
type: dns
domain: internal.example.com
port: 8080
---
apiVersion: networking.higress.io/v1
kind: HttpApi
metadata:
name: ai-gateway
spec:
rules:
- path: /v1/chat/completions
service: openai.backend
timeout: 30s
网关可以结合鉴权插件、限流策略、成本统计等功能,实现生产级的 AI 应用管理。
3. 电商实战:API 与 AI 结合的应用场景
API 与 AI 的结合在电商领域已经有大量落地案例,主要体现在智能选品、智能导购、供应链协同等方面。
3.1 智能选品与动态定价
AI 通过调用电商平台的商品数据 API(如淘宝、1688 的搜索/详情接口)实时获取市场数据,结合大模型的分析能力,辅助商家进行选品决策和定价调整。
技术架构:
-
定期调用商品搜索 API,拉取关键词下的商品列表。
-
通过 AI 分析销量、价格分布、评论情感,预测爆款趋势。
-
输出选品建议表格或动态调价策略。
示例:调用 1688 商品搜索 API 并结合 AI 分析(Python)
import requests
import openai
def search_1688(keyword):
"""调用 1688 商品搜索 API(需替换为实际开放平台接口)"""
# 注意:此处为示例 URL,实际需使用官方开放平台
url = "https://gw.open.1688.com/openapi/param2/2.0/alibaba.item.search"
params = {
"app_key": "your_key",
"keyword": keyword,
"page_size": 20,
# 签名等参数省略
}
resp = requests.get(url, params=params)
return resp.json()
def ai_select_products(keyword):
raw_data = search_1688(keyword)
# 提取简要信息
products = []
for item in raw_data.get("result", {}).get("items", []):
products.append({
"title": item["title"],
"price": item["price"],
"sales": item["sales"]
})
# 让 AI 分析并给出选品建议
prompt = f"基于以下商品数据,推荐最有潜力的3款商品,并说明理由:\n{products}"
client = openai.OpenAI()
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)
return resp.choices[0].message.content
print(ai_select_products("蓝牙耳机"))
3.2 智能导购与对话式购物
通过将商品搜索、详情、下单等 API 包装为 MCP 工具,接入 AI 智能体,用户可以通过自然语言完成整个购物流程。
流程示例:
-
用户说:“我想买一个 200 元以内的蓝牙耳机,要降噪的。”
-
Agent 调用商品搜索 API,根据关键词和价格过滤。
-
返回多个选项,用户选择后,Agent 调用详情 API 展示参数,最后引导下单。
3.3 供应链全链路协同
AI Agent 可以通过 API 集成供应链系统,完成从选品、工厂寻源、询价到下单的自动化流程。例如,通过 1688 的工厂信息 API、询价 API 等,Agent 可以自主寻找优质供应商,降低人工成本。
4. 总结
API 在 AI 应用中的角色已经从“数据通道”进化为“执行引擎”。Function Calling 让模型能够调用外部工具,MCP 协议正在标准化工具连接方式,API 网关则为规模化应用提供了管理能力。对于开发者而言,理解这些模式并掌握相应的实现技术,是构建下一代 AI 应用的基础。
未来,随着 AI Agent 能力的增强,API 的设计和管理将更加重要。谁能高效、安全地让 AI “调用”世界,谁就能在智能化竞争中占据先机。
更多推荐


所有评论(0)