mirror of
https://github.com/hanzoai/go-openai-realtime.git
synced 2026-09-30 21:54:42 +00:00
6403f7d4e3c1042a49814c60e41ce2ae006cfc23
OpenAI Realtime API SDK for Golang
This library provides unofficial Go clients for OpenAI Realtime API. We support all 9 client events and 28 server events.
- gpt-4o-realtime-preview
- gpt-4o-realtime-preview-2024-10-01
Installation
go get github.com/WqyJh/go-openai-realtime
Currently, go-openai-realtime requires Go version 1.19 or greater.
Usage
package main
import (
"bufio"
"context"
"fmt"
"log"
"os"
openairt "github.com/WqyJh/go-openai-realtime"
)
func main() {
client := openairt.NewClient("your-api-key")
conn, err := client.Connect(context.Background())
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// Teletype response
responseDeltaHandler := func(ctx context.Context, event openairt.ServerEvent) {
switch event.ServerEventType() {
case openairt.ServerEventTypeResponseTextDelta:
fmt.Printf(event.(openairt.ResponseTextDeltaEvent).Delta)
case openairt.ServerEventTypeResponseDone:
fmt.Print("\n\n> ")
}
}
connHandler := openairt.NewConnHandler(context.Background(), conn, responseDeltaHandler)
connHandler.Start()
defer connHandler.Stop()
err = conn.SendMessage(context.Background(), &openairt.SessionUpdateEvent{
Session: openairt.ClientSession{
Modalities: []openairt.Modality{openairt.ModalityText},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Print("> ")
s := bufio.NewScanner(os.Stdin)
for s.Scan() {
conn.SendMessage(context.Background(), &openairt.ConversationItemCreateEvent{
Item: openairt.MessageItem{
ID: openairt.GenerateId("msg_", 10),
Status: openairt.ItemStatusCompleted,
Type: openairt.MessageItemTypeMessage,
Role: openairt.MessageRoleUser,
Content: []openairt.MessageContentPart{
{
Type: openairt.MessageContentTypeInputText,
Text: s.Text(),
},
},
},
})
conn.SendMessage(context.Background(), &openairt.ResponseCreateEvent{
Response: openairt.ResponseCreateParams{
Modalities: []openairt.Modality{openairt.ModalityText},
MaxOutputTokens: 4000,
},
})
}
}
More examples
Languages
Go
99.7%
Makefile
0.2%