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
go get github.com/sashabaranov/go-openaiConfiguracao
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 wrappertype 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 = httpClientclient := openai.NewClientWithConfig(config)| Header | Descricao |
|---|---|
Floopy-Cache | Estrategia de cache: semantic ou exact |
floopy-property-* | Anexe metadados personalizados para filtragem no dashboard |
floopy-fallback | Modelo de fallback se o provedor principal falhar |
floopy-session-id | Agrupe requisicoes relacionadas em uma sessao |
floopy-user-id | Associe requisicoes a um usuario final |
Consulte a Referencia de Headers para a lista completa.