UniterRouter

快速开始

快速开始使用 UniterRouter 统一 AI API。详细教程教你如何在 Python、JavaScript 或 cURL 应用中集成 GPT-4、Claude、Gemini 等 200+ 大语言模型。

🚀 快速开始

欢迎使用 UniterRouter —— 一个统一的 AI 网关,让你可以调用 200+ 大语言模型,同时保持现有代码和开发工作流不变。

简而言之 —— 将 HTTP 请求指向 https://api.uniterouter.ai/v1/…,提供你的 UNITEROUTER_API_KEY,就这么简单。


1 · 获取 API 密钥

  1. 登录控制台
  2. 创建新项目 → 复制密钥
  3. 在终端或 .env 文件中导出:
export UNITEROUTER_API_KEY="sk_XXXXXXXXXXXXXXXX"

2 · 选择你的编程语言

curl -X POST https://api.uniterouter.ai/v1/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer $UNITEROUTER_API_KEY" \-d '{"model": "gpt-4o","messages": [  {"role": "user", "content": "你好,最近怎么样?"}]}'
const response = await fetch('https://api.uniterouter.ai/v1/chat/completions', {method: 'POST',headers: {  'Content-Type': 'application/json',  'Authorization': `Bearer ${process.env.UNITEROUTER_API_KEY}`},body: JSON.stringify({  model: 'gpt-4o',  messages: [    { role: 'user', content: '你好,最近怎么样?' }  ]})});if (!response.ok) {throw new Error(`HTTP 错误! 状态码: ${response.status}`);}const data = await response.json();console.log(data.choices[0].message.content);
import { useState } from 'react'function ChatComponent() {const [response, setResponse] = useState('');const [loading, setLoading] = useState(false);const sendMessage = async () => {setLoading(true);try {const res = await fetch('https://api.uniterouter.ai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.REACT_APP_UNITEROUTER_API_KEY}`},body: JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: '你好,最近怎么样?' }]})});    if (!res.ok) {      throw new Error(`HTTP 错误! 状态码: ${res.status}`);    }    const data = await res.json();    setResponse(data.choices[0].message.content);  } catch (error) {    console.error('错误:', error);  } finally {    setLoading(false);  }};return (<div><button onClick={sendMessage} disabled={loading}>	{loading ? "发送中..." : "发送消息"}</button>{response && <p>{response}</p>}</div>); }export default ChatComponent;
; // app/api/chat/route.tsimport { NextRequest, NextResponse } from "next/server";export async function POST(request: NextRequest) {const { message } = await request.json();const response = await fetch('https://api.uniterouter.ai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${process.env.UNITEROUTER_API_KEY}`},body: JSON.stringify({model: 'gpt-4o',messages: [{ role: 'user', content: message }]})});if (!response.ok) {return NextResponse.json({ error: '获取响应失败' }, { status: response.status });}const data = await response.json();return NextResponse.json({message: data.choices[0].message.content});}// 在组件中使用:// const response = await fetch('/api/chat', {// method: 'POST',// headers: { 'Content-Type': 'application/json' },// body: JSON.stringify({ message: '你好,最近怎么样?' })// });
import requestsimport osresponse = requests.post('https://api.uniterouter.ai/v1/chat/completions',headers={'Content-Type': 'application/json','Authorization': f'Bearer {os.getenv("UNITEROUTER_API_KEY")}'},json={'model': 'gpt-4o','messages': [{'role': 'user', 'content': '你好,最近怎么样?'}]})response.raise_for_status()print(response.json()['choices'][0]['message']['content'])
import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.URI;String apiKey = System.getenv("UNITEROUTER_API_KEY");String requestBody = """{"model": "gpt-4o","messages": [{"role": "user", "content": "你好,最近怎么样?"}]}""";HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://api.uniterouter.ai/v1/chat/completions")).header("Content-Type", "application/json").header("Authorization", "Bearer " + apiKey).POST(HttpRequest.BodyPublishers.ofString(requestBody)).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());
use reqwest::Client;use serde_json::json;use std::env;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> {let client = Client::new();let api_key = env::var("UNITEROUTER_API_KEY")?;  let response = client      .post("https://api.uniterouter.ai/v1/chat/completions")      .header("Content-Type", "application/json")      .header("Authorization", format!("Bearer {}", api_key))      .json(&json!({          "model": "gpt-4o",          "messages": [              {"role": "user", "content": "你好,最近怎么样?"}          ]      }))      .send()      .await?;  let result: serde_json::Value = response.json().await?;  println!("{}", result["choices"][0]["message"]["content"]);  Ok(())}
package mainimport (  "bytes"  "encoding/json"  "fmt"  "net/http"  "os")type ChatRequest struct {Model string `json:"model"`Messages []Message `json:"messages"`}type Message struct {Role string `json:"role"`Content string `json:"content"`}func main() {apiKey := os.Getenv("UNITEROUTER_API_KEY")  requestBody := ChatRequest{      Model: "gpt-4o",      Messages: []Message{{Role: "user", Content: "你好,最近怎么样?"}},  }  jsonData, _ := json.Marshal(requestBody)  req, _ := http.NewRequest("POST", "https://api.uniterouter.ai/v1/chat/completions", bytes.NewBuffer(jsonData))  req.Header.Set("Content-Type", "application/json")  req.Header.Set("Authorization", "Bearer "+apiKey)  client := &http.Client{}  resp, _ := client.Do(req)  defer resp.Body.Close()  fmt.Println("收到响应")}
<?php$apiKey = $_ENV['UNITEROUTER_API_KEY'];$data = ['model' => 'gpt-4o','messages' => [['role' => 'user', 'content' => '你好,最近怎么样?']]];$options = [  'http' => [      'header' => [          'Content-Type: application/json',          'Authorization: Bearer ' . $apiKey      ],      'method' => 'POST',      'content' => json_encode($data)]];$context = stream_context_create($options);$response = file_get_contents('https://api.uniterouter.ai/v1/chat/completions',false,$context);if ($response === FALSE) {throw new Exception('请求失败');}$result = json_decode($response, true);echo $result['choices'][0]['message']['content'];?>
require 'net/http'require 'json'require 'uri'uri = URI('https://api.uniterouter.ai/v1/chat/completions')http = Net::HTTP.new(uri.host, uri.port)http.use_ssl = truerequest = Net::HTTP::Post.new(uri)request['Content-Type'] = 'application/json'request['Authorization'] = "Bearer #{ENV['UNITEROUTER_API_KEY']}"request.body = {model: 'gpt-4o',messages: [{ role: 'user', content: '你好,最近怎么样?' }]}.to_jsonresponse = http.request(request)if response.code != '200'raise "HTTP 错误: #{response.code}"endresult = JSON.parse(response.body)puts result['choices'][0]['message']['content']

3 · SDK 集成

vercel-ai-sdk.ts
import { createOpenAI } from "@ai-sdk/openai";

const uniterouter = createOpenAI({
	baseURL: "https://api.uniterouter.ai/v1",
	apiKey: process.env.UNITEROUTER_API_KEY!,
});

const completion = await uniterouter.chat({
	model: "gpt-4o",
	messages: [{ role: "user", content: "你好,最近怎么样?" }],
});

console.log(completion.choices[0].message.content);
openai-sdk.ts
import OpenAI from "openai";

const openai = new OpenAI({
	baseURL: "https://api.uniterouter.ai/v1",
	apiKey: process.env.UNITEROUTER_API_KEY,
});

const completion = await openai.chat.completions.create({
	model: "gpt-4o",
	messages: [{ role: "user", content: "你好,最近怎么样?" }],
});

console.log(completion.choices[0].message.content);

4 · 进阶功能

  • 流式输出:在请求中传入 stream: true,网关会原样代理事件流。
  • 监控:每次调用都会在控制台显示延迟、成本和提供商详情。

5 · 常见问题


6 · 下一步

祝你开发顺利!✨

How is this guide?