2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-10 14:47:01 +08:00
2024-10-19 11:45:19 +08:00
2024-10-18 11:18:05 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00
2024-10-19 11:45:19 +08:00

OpenAI Realtime API SDK for Golang

Go Reference Go Report Card codecov

This library provides unofficial Go clients for OpenAI Realtime API. We support all 9 client events and 28 server events.

Model Support:

  • 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

S
Description
No description provided
Readme MIT
682 KiB
Languages
Go 99.7%
Makefile 0.2%