概述
在AI应用开发中,接入多个大模型服务是常见需求,但各家API格式不统一、鉴权方式不同、独立计费难以管控。硅基动力是基于开源New API项目构建的AI模型统一网关平台,提供兼容OpenAI格式的单一API端点,聚合30+主流AI服务商。
本文演示从注册到实际调用的完整接入流程,以及生产环境中的关键配置。
一、接入配置
1.1 获取API凭证
注册 硅基动力后,在控制台创建Token,获取以下信息:
- API Key:用于鉴权的令牌
- Base URL:
https://www.guijipower.com/v1
1.2 环境变量配置
# 替换原来的OpenAI配置即可 export OPENAI_API_KEY="sk-你的硅基动力Token" export OPENAI_BASE_URL="https://www.guijipower.com/v1"1.3 Python SDK调用示例
from openai import OpenAI # 初始化客户端,指向硅基动力网关 client = OpenAI( api_key="sk-你的硅基动力Token", base_url="https://www.guijipower.com/v1" ) # 调用GPT-4o response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "你是一个专业的技术助手"}, {"role": "user", "content": "解释什么是API网关"} ], stream=True # 支持流式输出 ) for chunk in response: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="")1.4 切换模型——只改一个参数
# 切换到Claude 3.5 Sonnet response = client.chat.completions.create( model="claude-3-5-sonnet-20241022", # 只改模型名称 messages=[...], stream=True ) # 切换到DeepSeek response = client.chat.completions.create( model="deepseek-chat", # 只改模型名称 messages=[...], stream=True ) # 切换到Gemini response = client.chat.completions.create( model="gemini-2.0-flash", # 只改模型名称 messages=[...], stream=True )核心优势:切换模型时,SDK初始化代码和请求结构完全不变,只需修改model参数。
二、函数调用(Function Calling)
硅基动力网关完整支持Function Calling能力,调用方式与OpenAI官方一致:
tools = [ { "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的天气信息", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "城市名称" } }, "required": ["city"] } } } ] response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "user", "content": "上海今天天气怎么样?"} ], tools=tools, tool_choice="auto" ) # 解析工具调用 tool_call = response.choices[0].message.tool_calls[0] print(f"调用函数: {tool_call.function.name}") print(f"参数: {tool_call.function.arguments}")三、多模型降级方案
生产环境中,单模型依赖风险高。利用硅基动力的智能路由,可以实现自动降级:
import time # 模型优先级列表 MODEL_FALLBACK_CHAIN = [ "gpt-4o", # 主模型 "claude-3-5-sonnet-20241022", # 备用1 "deepseek-chat", # 备用2 "gemini-2.0-flash" # 兜底 ] def chat_with_fallback(messages, **kwargs): """ 带降级的模型调用 硅基动力网关本身已内置渠道故障切换 此处是应用层的额外保障 """ for model in MODEL_FALLBACK_CHAIN: try: response = client.chat.completions.create( model=model, messages=messages, timeout=30, **kwargs ) return response except Exception as e: print(f"模型 {model} 调用失败: {e}") continue raise Exception("所有模型均不可用")注意:硅基动力网关本身已内置渠道级故障切换,上述代码是应用层的额外保障。对于大多数场景,网关层面的自动切换已经足够。
四、成本监控
硅基动力后台提供实时数据看板,但如果你需要在代码层面追踪Token消耗:
def chat_with_cost_tracking(messages, model="gpt-4o"): """ 带成本追踪的调用 """ response = client.chat.completions.create( model=model, messages=messages ) # 从响应中提取Token用量 usage = response.usage cost_info = { "model": model, "prompt_tokens": usage.prompt_tokens, "completion_tokens": usage.completion_tokens, "total_tokens": usage.total_tokens } print(f"[{model}] Token用量: {usage.total_tokens} " f"(输入: {usage.prompt_tokens}, 输出: {usage.completion_tokens})") return response, cost_info五、常见问题
Q:通过网关调用和直连有什么性能差异?
A:网关层增加约50-200ms延迟,主要用于请求转发和格式转换。对大多数应用场景影响可忽略,延迟敏感型应用建议评估后再决定。
Q:是否支持流式输出?
A:完整支持SSE流式输出,调用方式与OpenAI官方一致,设置stream=True即可。
Q:数据是否会经过平台?
A:是的,请求和响应数据会经过网关中转。对数据安全有严格要求的场景,建议考虑自建New API方案。
Q:支持哪些模型?
A:支持OpenAI GPT系列、Claude系列、Google Gemini、DeepSeek、Midjourney、Suno等30+服务商的模型。