Files
bifrost/docs/quickstart/go-sdk/setting-up.mdx
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

145 lines
4.2 KiB
Plaintext

---
title: "Setting Up"
description: "Get Bifrost running in your Go application in 30 seconds with minimal setup and direct code integration."
icon: "play"
---
<video width="100%" controls>
<source src="https://github.com/maximhq/bifrost/raw/refs/heads/main/docs/media/package-demo.mp4" type="video/mp4" />
Your browser does not support the video tag.
</video>
## 30-Second Setup
Get Bifrost running in your Go application with minimal setup. This guide shows you how to integrate multiple AI providers through a single, unified interface.
### 1. Install Package
```bash
go mod init my-bifrost-app
go get github.com/maximhq/bifrost/core
```
### 2. Set Environment Variable
```bash
export OPENAI_API_KEY="your-openai-api-key"
```
### 3. Create `main.go`
```go
package main
import (
"context"
"fmt"
"os"
"github.com/maximhq/bifrost/core"
"github.com/maximhq/bifrost/core/schemas"
)
type MyAccount struct{}
// Account interface needs to implement these 3 methods
func (a *MyAccount) GetConfiguredProviders() ([]schemas.ModelProvider, error) {
return []schemas.ModelProvider{schemas.OpenAI}, nil
}
func (a *MyAccount) GetKeysForProvider(ctx *context.Context, provider schemas.ModelProvider) ([]schemas.Key, error) {
if provider == schemas.OpenAI {
return []schemas.Key{{
Value: os.Getenv("OPENAI_API_KEY"),
Models: schemas.WhiteList{"*"}, // Keep Models ["*"] to use any model
Weight: 1.0,
}}, nil
}
return nil, fmt.Errorf("provider %s not supported", provider)
}
func (a *MyAccount) GetConfigForProvider(provider schemas.ModelProvider) (*schemas.ProviderConfig, error) {
if provider == schemas.OpenAI {
// Return default config (can be customized for advanced use cases)
return &schemas.ProviderConfig{
NetworkConfig: schemas.DefaultNetworkConfig,
ConcurrencyAndBufferSize: schemas.DefaultConcurrencyAndBufferSize,
}, nil
}
return nil, fmt.Errorf("provider %s not supported", provider)
}
// Main function implement to initialize bifrost and make a request
func main() {
client, initErr := bifrost.Init(context.Background(), schemas.BifrostConfig{
Account: &MyAccount{},
})
if initErr != nil {
panic(initErr)
}
defer client.Shutdown()
messages := []schemas.ChatMessage{
{
Role: schemas.ChatMessageRoleUser,
Content: &schemas.ChatMessageContent{
ContentStr: schemas.Ptr("Hello, Bifrost!"),
},
},
}
response, err := client.ChatCompletionRequest(schemas.NewBifrostContext(context.Background(), schemas.NoDeadline), &schemas.BifrostChatRequest{
Provider: schemas.OpenAI,
Model: "gpt-4o-mini",
Input: messages,
})
if err != nil {
panic(err)
}
fmt.Println("Response:", *response.Choices[0].Message.Content.ContentStr)
}
```
### 4. Run Your App
```bash
go run main.go
# Output: Response: Hello! I'm Bifrost, your AI model gateway...
```
**🎉 That's it!** You're now running Bifrost in your Go application.
### What Just Happened?
1. **Account Interface**: `MyAccount` provides API keys and list of providers to Bifrost for initialisation and key lookups.
2. **Provider Resolution**: `schemas.OpenAI` tells Bifrost to use OpenAI as the provider.
3. **Model Selection**: `"gpt-4o-mini"` specifies which model to use.
4. **Unified API**: Same interface works for any provider/model combination (OpenAI, Anthropic, Vertex etc.)
---
## Next Steps
Now that you have Bifrost running, explore these focused guides:
### Essential Topics
- **[Provider Configuration](./provider-configuration)** - Multiple providers & automatic failovers
- **[Streaming Responses](./streaming)** - Real-time chat, audio, and transcription
- **[Tool Calling](./tool-calling)** - Functions & MCP server integration
- **[Multimodal AI](./multimodal)** - Images, speech synthesis, and vision
### Advanced Topics
- **[Core Features](../../features/)** - Caching, observability, and governance
- **[Integrations](../../integrations/)** - Drop-in replacements for existing SDKs
- **[Architecture](../../architecture/)** - How Bifrost works internally
- **[Deployment](../../deployment-guides)** - Production setup and scaling
---
**Happy coding with Bifrost!** 🚀