Quick Start
Basic Usage
package main
import (
"context"
"fmt"
"log"
"github.com/joakimcarlsson/ai/message"
"github.com/joakimcarlsson/ai/model"
llm "github.com/joakimcarlsson/ai/providers"
)
func main() {
ctx := context.Background()
client, err := llm.NewLLM(
model.ProviderOpenAI,
llm.WithAPIKey("your-api-key"),
llm.WithModel(model.OpenAIModels[model.GPT4o]),
llm.WithMaxTokens(1000),
)
if err != nil {
log.Fatal(err)
}
messages := []message.Message{
message.NewUserMessage("Hello, how are you?"),
}
response, err := client.SendMessages(ctx, messages, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Content)
}
Streaming Responses
stream := client.StreamResponse(ctx, messages, nil)
for event := range stream {
switch event.Type {
case types.EventContentDelta:
fmt.Print(event.Content)
case types.EventComplete:
fmt.Printf("\nTokens used: %d\n", event.Response.Usage.InputTokens)
case types.EventError:
log.Fatal(event.Error)
}
}
Multimodal (Images)
imageData, err := os.ReadFile("image.png")
if err != nil {
log.Fatal(err)
}
msg := message.NewUserMessage("What's in this image?")
msg.AddAttachment(message.Attachment{
MIMEType: "image/png",
Data: imageData,
})
messages := []message.Message{msg}
response, err := client.SendMessages(ctx, messages, nil)
Your First Agent
import (
"github.com/joakimcarlsson/ai/agent"
"github.com/joakimcarlsson/ai/agent/session"
)
myAgent := agent.New(llmClient,
agent.WithSystemPrompt("You are a helpful assistant."),
agent.WithTools(&weatherTool{}),
agent.WithSession("user-123", session.FileStore("./sessions")),
)
response, _ := myAgent.Chat(ctx, "What's the weather in Tokyo?")
fmt.Println(response.Content)
See the Agent Framework section for the full guide.