go mod init gateway-demo
# Server environment: OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MODEL
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
"strings"
"time"
)
func main() {
key, base, model := os.Getenv("OPENAI_API_KEY"), os.Getenv("OPENAI_BASE_URL"), os.Getenv("OPENAI_MODEL")
if key == "" || base == "" || model == "" { log.Fatal("Missing server environment") }
body, err := json.Marshal(map[string]any{
"model": model,
"messages": []map[string]string{{"role": "user", "content": "Hello"}},
})
if err != nil { log.Fatal(err) }
req, err := http.NewRequest(http.MethodPost, strings.TrimRight(base, "/")+"/chat/completions", bytes.NewReader(body))
if err != nil { log.Fatal(err) }
req.Header.Set("Authorization", "Bearer "+key)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK { log.Fatalf("HTTP %d", resp.StatusCode) }
data, err := io.ReadAll(io.LimitReader(resp.Body, 4<<20))
if err != nil { log.Fatal(err) }
fmt.Println(string(data))
}