Docs
Go

Go

Use o Ignus Code com o SDK oficial da OpenAI para Go.

Instalação

go get github.com/openai/openai-go

Configuração

main.go
package main
 
import (
    "context"
    "fmt"
    "os"
 
    "github.com/openai/openai-go"
    "github.com/openai/openai-go/option"
)
 
func main() {
    client := openai.NewClient(
        option.WithBaseURL("https://proxy.ignustec.com.br/v1"),
        option.WithAPIKey(os.Getenv("IGNUS_API_KEY")),
    )
 
    ctx := context.Background()
 
    response, err := client.Chat.Completions.New(ctx, openai.ChatCompletionNewParams{
        Model: openai.F(openai.ChatModelGPT4o),
        Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
            openai.UserMessage("O que é um goroutine em Go?"),
        }),
    })
    if err != nil {
        panic(err)
    }
 
    fmt.Println(response.Choices[0].Message.Content)
}

Streaming

stream.go
stream := client.Chat.Completions.NewStreaming(ctx, openai.ChatCompletionNewParams{
    Model: openai.F(openai.ChatModelGPT4o),
    Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
        openai.UserMessage("Explique channels em Go."),
    }),
})
 
for stream.Next() {
    chunk := stream.Current()
    if len(chunk.Choices) > 0 {
        fmt.Print(chunk.Choices[0].Delta.Content)
    }
}
 
if err := stream.Err(); err != nil {
    panic(err)
}

Com system prompt

messages := []openai.ChatCompletionMessageParamUnion{
    openai.SystemMessage("Você é um especialista em Go."),
    openai.UserMessage("Qual a diferença entre goroutine e thread?"),
}
 
response, err := client.Chat.Completions.New(ctx, openai.ChatCompletionNewParams{
    Model:    openai.F("gpt-4o"),
    Messages: openai.F(messages),
    Temperature: openai.F(0.7),
})