Go SDK
Используйте популярный go-openai SDK с GonkaGate. Полная совместимость с OpenAI API.
Сообщество SDK
Мы рекомендуем использовать sashabaranov/go-openai SDK — самый популярный Go-клиент для OpenAI-совместимых API.
github.com/sashabaranov/go-openaiЧтобы получить API-ключ, базовый URL и первый запрос, начните с руководства Quickstart .
Установка
Установите go-openai SDK с помощью go get:
terminal
go get github.com/sashabaranov/go-openaiНастройка
Настройте клиент для использования API GonkaGate:
config.go
package main
import (
"github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("gp-your-api-key")
config.BaseURL = "https://api.gonkagate.com/v1"
client := openai.NewClientWithConfig(config)
}Базовое использование
Выполните первый запрос к чату:
basic_usage.go
package main
import (
"context"
"fmt"
"log"
"github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("gp-your-api-key")
config.BaseURL = "https://api.gonkagate.com/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "qwen/qwen3-235b-a22b-instruct-2507-fp8",
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleSystem,
Content: "You are a helpful assistant.",
},
{
Role: openai.ChatMessageRoleUser,
Content: "Hello, how are you?",
},
},
Temperature: 0.7,
MaxTokens: 1000,
},
)
if err != nil {
log.Fatalf("ChatCompletion error: %v", err)
}
fmt.Println(resp.Choices[0].Message.Content)
}Контекст и отмена
Используйте контексты Go для таймаутов и отмены запросов:
context.go
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("gp-your-api-key")
config.BaseURL = "https://api.gonkagate.com/v1"
client := openai.NewClientWithConfig(config)
// Create context with timeout
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
resp, err := client.CreateChatCompletion(
ctx,
openai.ChatCompletionRequest{
Model: "qwen/qwen3-235b-a22b-instruct-2507-fp8",
Messages: []openai.ChatCompletionMessage{
{Role: openai.ChatMessageRoleUser, Content: "Hello!"},
},
},
)
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
log.Fatal("Request timed out")
}
log.Fatalf("Error: %v", err)
}
fmt.Println(resp.Choices[0].Message.Content)
}Заметки по языку
Несколько советов для Go:
- Используйте общий http.Client и задавайте таймауты.
- Применяйте context.Context для отмены и дедлайнов.
- Добавьте ретраи для ответов 429/503.
Смотрите Streaming и обработку ошибок для стриминга и ретраев.