Go、Rust 与 Java 调用 LLM API:59API 实战接入指南
用一个兼容接口连接多种大模型
后端服务往往不只使用一种模型:低成本任务适合快速模型,复杂代码审查或长文本推理则需要更强模型。59API 提供按量付费的 AI API 中转服务,基础地址为 https://api.59api.com,可通过 OpenAI 兼容格式接入 Claude(Opus、Sonnet、Haiku、Fable)和 GPT 模型。它使用原生官方质量模型,没有降级路径,适合希望控制预算、同时保留模型切换能力的 Go、Rust 和 Java 项目。
先在 59API 控制台创建 API Key,并确认可用模型 ID。以下示例统一请求 /v1/chat/completions;将 YOUR_MODEL_ID 替换为控制台展示的模型名称,将 YOUR_59API_KEY 放入环境变量,避免把密钥提交到代码仓库。
先验证请求格式
使用 curl 可以最快确认网络、密钥和模型配置:curl https://api.59api.com/v1/chat/completions -H "Authorization: Bearer YOUR_59API_KEY" -H "Content-Type: application/json" -d "{"model":"YOUR_MODEL_ID","messages":[{"role":"user","content":"用一句话解释 Go 的 context。"}],"temperature":0.2}"
成功响应中的 choices[0].message.content 就是模型回答。开发阶段建议先用较经济的模型验证流程,再针对确实需要高推理能力的请求切换到 Sonnet、Opus 或对应 GPT 模型。
Go:标准库发送聊天请求
Go 无须先绑定特定 SDK,使用 net/http 即可保持依赖轻量:client := &http.Client{Timeout: 30 * time.Second}; body := strings.NewReader(`{"model":"YOUR_MODEL_ID","messages":[{"role":"user","content":"生成一个 JSON 示例"}]}`); req, _ := http.NewRequest("POST", "https://api.59api.com/v1/chat/completions", body); req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); resp, err := client.Do(req)
生产代码应检查 err、defer resp.Body.Close(),并在状态码非 2xx 时读取响应体记录错误。对于已有 OpenAI Go SDK 的项目,只需把 BaseURL 改为 59API 地址并继续沿用现有消息结构。
Rust:reqwest 与 serde 序列化请求
Rust 项目可用 reqwest 和 serde_json 构建类型安全的 JSON:let client = reqwest::Client::new(); let payload = serde_json::json!({"model":"YOUR_MODEL_ID","messages":[{"role":"user","content":"列出三个缓存策略"}],"temperature":0.3}); let response = client.post("https://api.59api.com/v1/chat/completions").bearer_auth(std::env::var("API_KEY")?).json(&payload).send().await?;
随后使用 response.error_for_status()? 将 401、429 和 5xx 转成可处理的错误,再解析 JSON。对 429 建议使用指数退避重试;对不可重试的 4xx,记录请求 ID 与模型名即可,不要记录完整密钥或敏感提示词。
Java:HttpClient 调用兼容端点
Java 11 及以上可直接使用内置 HttpClient:String json = "{\"model\":\"YOUR_MODEL_ID\",\"messages\":[{\"role\":\"user\",\"content\":\"总结这段日志\"}]}"; HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.59api.com/v1/chat/completions")).header("Authorization", "Bearer " + System.getenv("API_KEY")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(json)).build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
将 response.statusCode() 与响应 JSON 一起交给 Jackson 或 Gson 解析,取出 choices 数组中的 content。若服务包含用户输入,应设置连接和读取超时,并为每次调用设置业务级取消机制。
控制成本与稳定性
- 为不同任务配置模型路由:摘要、分类和格式转换优先使用低成本模型。
- 限制 max_tokens,并将 temperature 保持在任务所需的最低合理值。
- 缓存相同输入的结果,特别是固定文档问答和批量分类。
- 记录模型、输入输出 token、状态码和耗时,才能定位成本异常。
- 把 API Key 放在部署平台的密钥管理或环境变量中,并定期轮换。
59API 的按量付费方式适合从原型到生产逐步扩大调用量,也支持推荐返利。需要同时试用 Claude 与 GPT、又不想维护多套接入逻辑时,可以注册 59API 后先用上述 curl 请求完成一次端到端验证。
Prêt à commencer ?
Connectez Claude et GPT en quelques minutes aux prix les plus bas, sans bridage. Inscrivez-vous pour votre clé API.
Inscription gratuite