Pular para o conteúdo

Go

Visao Geral

O Floopy e um gateway sem SDK. O popular pacote go-openai suporta URLs base personalizadas, entao voce pode rotear todas as requisicoes pelo Floopy sem dependencias extras. Voce ganha cache, rate limiting, fallbacks e observabilidade de graca.

Instalacao

Terminal window
go get github.com/sashabaranov/go-openai

Configuracao

package main
import (
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("fp_your_api_key")
config.BaseURL = "https://api.floopy.ai/v1"
client := openai.NewClientWithConfig(config)
}

Defina sua chave de API do Floopy (comeca com fp_). Voce pode criar uma no dashboard.

Requisicao Basica

resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: openai.GPT4o,
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "Explain quantum computing in one sentence.",
},
},
},
)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Choices[0].Message.Content)

Streaming

stream, err := client.CreateChatCompletionStream(
context.Background(),
openai.ChatCompletionRequest{
Model: openai.GPT4o,
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "Write a short poem.",
},
},
Stream: true,
},
)
if err != nil {
log.Fatal(err)
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
log.Fatal(err)
}
fmt.Print(response.Choices[0].Delta.Content)
}

Headers Personalizados

Adicione headers especificos do Floopy configurando um transporte HTTP personalizado:

config := openai.DefaultConfig("fp_your_api_key")
config.BaseURL = "https://api.floopy.ai/v1"
// Add custom headers via a round-tripper wrapper
type headerTransport struct {
base http.RoundTripper
headers map[string]string
}
func (t *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
for k, v := range t.headers {
req.Header.Set(k, v)
}
return t.base.RoundTrip(req)
}
httpClient := &http.Client{
Transport: &headerTransport{
base: http.DefaultTransport,
headers: map[string]string{
"Floopy-Cache": "semantic",
"floopy-property-environment": "production",
"floopy-fallback": "claude-sonnet-4-20250514",
},
},
}
config.HTTPClient = httpClient
client := openai.NewClientWithConfig(config)
HeaderDescricao
Floopy-CacheEstrategia de cache: semantic ou exact
floopy-property-*Anexe metadados personalizados para filtragem no dashboard
floopy-fallbackModelo de fallback se o provedor principal falhar
floopy-session-idAgrupe requisicoes relacionadas em uma sessao
floopy-user-idAssocie requisicoes a um usuario final

Consulte a Referencia de Headers para a lista completa.