概述

在AI应用开发中,接入多个大模型服务是常见需求,但各家API格式不统一、鉴权方式不同、独立计费难以管控。硅基动力是基于开源New API项目构建的AI模型统一网关平台,提供兼容OpenAI格式的单一API端点,聚合30+主流AI服务商。

本文演示从注册到实际调用的完整接入流程,以及生产环境中的关键配置。

一、接入配置

1.1 获取API凭证

注册 硅基动力后,在控制台创建Token,获取以下信息:

  • API Key:用于鉴权的令牌
  • Base URLhttps://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+服务商的模型。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐