first commit
This commit is contained in:
144
docs/quickstart/go-sdk/setting-up.mdx
Normal file
144
docs/quickstart/go-sdk/setting-up.mdx
Normal file
@@ -0,0 +1,144 @@
|
||||
---
|
||||
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!** 🚀
|
||||
Reference in New Issue
Block a user