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 请求完成一次端到端验证。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप