Go 1.27.1, and the code it can say more simply

Modules declare go 1.27.1 and the build images follow. go fix applied the
modernizers, and the examples print streamed deltas with Print instead of
using them as format strings; omitzero is not applied, since it changes
what the JSON says.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-16 19:21:06 -07:00
co-authored by Claude Opus 5
parent 0252a2ee46
commit 410e64940f
15 changed files with 119 additions and 183 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.19"
go-version: "1.27.1"
- name: Run vet
run: |
go vet .
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: ["1.19", "1.20", "1.22", "1.23"]
go-version: ["1.27.1"]
steps:
- uses: actions/checkout@v4
+4 -6
View File
@@ -17,13 +17,11 @@ func TestCreateSession(t *testing.T) {
client := openairt.NewClient(key)
session, err := client.CreateSession(context.Background(), &openairt.CreateSessionRequest{
Model: openairt.GPT4oRealtimePreview20241217,
ClientSession: openairt.ClientSession{
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
})
require.NoError(t, err)
require.NotEmpty(t, session.ClientSecret.Value)
+23 -27
View File
@@ -4,9 +4,9 @@ import (
"encoding/json"
"testing"
openairt "github.com/hanzoai/go-openai-realtime"
"github.com/WqyJh/jsontools"
"github.com/hanzoai/go-openai"
openairt "github.com/hanzoai/go-openai-realtime"
"github.com/stretchr/testify/require"
)
@@ -18,13 +18,11 @@ func TestCreateSessionRequest(t *testing.T) {
}`
expected := openairt.CreateSessionRequest{
Model: openairt.GPT4oRealtimePreview20241217,
ClientSession: openairt.ClientSession{
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
}
var actual openairt.CreateSessionRequest
@@ -67,27 +65,25 @@ func TestCreateSessionResponse(t *testing.T) {
Value: "ek_abc123",
ExpiresAt: 1234567890,
},
ServerSession: openairt.ServerSession{
ID: "sess_001",
Object: "realtime.session",
Model: openairt.GPT4oRealtimePreview20241217,
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
Voice: openairt.VoiceAlloy,
InputAudioFormat: openairt.AudioFormatPcm16,
OutputAudioFormat: openairt.AudioFormatPcm16,
InputAudioTranscription: &openairt.InputAudioTranscription{
Model: openai.Whisper1,
},
TurnDetection: nil,
Tools: []openairt.Tool{},
ToolChoice: openairt.ServerToolChoice{String: openairt.ToolChoiceNone},
Temperature: &temperature,
MaxOutputTokens: openairt.IntOrInf(200),
ID: "sess_001",
Object: "realtime.session",
Model: openairt.GPT4oRealtimePreview20241217,
Modalities: []openairt.Modality{
openairt.ModalityAudio,
openairt.ModalityText,
},
Instructions: "You are a friendly assistant.",
Voice: openairt.VoiceAlloy,
InputAudioFormat: openairt.AudioFormatPcm16,
OutputAudioFormat: openairt.AudioFormatPcm16,
InputAudioTranscription: &openairt.InputAudioTranscription{
Model: openai.Whisper1,
},
TurnDetection: nil,
Tools: []openairt.Tool{},
ToolChoice: openairt.ServerToolChoice{String: openairt.ToolChoiceNone},
Temperature: &temperature,
MaxOutputTokens: openairt.IntOrInf(200),
}
var actual openairt.CreateSessionResponse
+6 -10
View File
@@ -4,8 +4,8 @@ import (
"encoding/json"
"testing"
openairt "github.com/hanzoai/go-openai-realtime"
"github.com/hanzoai/go-openai"
openairt "github.com/hanzoai/go-openai-realtime"
"github.com/hanzoai/go-openai/jsonschema"
"github.com/stretchr/testify/require"
)
@@ -13,9 +13,7 @@ import (
func TestSessionUpdateEvent(t *testing.T) {
temperature := float32(0.5)
message := openairt.SessionUpdateEvent{
EventBase: openairt.EventBase{
EventID: "test-id",
},
EventID: "test-id",
Session: openairt.ClientSession{
Modalities: []openairt.Modality{openairt.ModalityText, openairt.ModalityAudio},
Instructions: "test-instructions",
@@ -26,12 +24,10 @@ func TestSessionUpdateEvent(t *testing.T) {
Model: openai.Whisper1,
},
TurnDetection: &openairt.ClientTurnDetection{
Type: openairt.ClientTurnDetectionTypeServerVad,
TurnDetectionParams: openairt.TurnDetectionParams{
Threshold: 0.5,
PrefixPaddingMs: 1000,
SilenceDurationMs: 2000,
},
Type: openairt.ClientTurnDetectionTypeServerVad,
Threshold: 0.5,
PrefixPaddingMs: 1000,
SilenceDurationMs: 2000,
},
Tools: []openairt.Tool{
{
+1 -2
View File
@@ -114,8 +114,7 @@ func (c *ConnHandler) run() error {
msg, err := c.conn.ReadMessage(c.ctx)
if err != nil {
var permanent *PermanentError
if errors.As(err, &permanent) {
if permanent, ok := errors.AsType[*PermanentError](err); ok {
return permanent.Err
}
c.conn.logger.Warnf("read message temporary error: %+v", err)
+1 -1
View File
@@ -1,6 +1,6 @@
module github.com/hanzoai/go-openai-realtime/contrib/ws-gorilla
go 1.19
go 1.27.1
require (
github.com/gorilla/websocket v1.5.3
+2
View File
@@ -1,4 +1,5 @@
github.com/WqyJh/jsontools v0.3.1 h1:zKT+DvxUSTji06ZcjsbQzZ48PycFZDI0OGATmmFhJ+U=
github.com/WqyJh/jsontools v0.3.1/go.mod h1:Gk2OlyXjAJmYNZ0aUbEXGHq4I5ihGRjXxVuUprWtkss=
github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -6,6 +7,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hanzoai/go-openai v1.41.0 h1:/jF/fZbBHyK7N14mQquUKzCnjwomcuy5YVBIn8AR3NQ=
github.com/hanzoai/go-openai v1.41.0/go.mod h1:v0q1gjYS3fpa41xOwzUUXF/julZXhoSmGULcDhmxMY8=
github.com/hanzoai/go-openai-realtime v1.0.0 h1:toSd20ii/1zwxk1ULlT6bHZTTdi5qf7AIMzZm0Gy8NY=
github.com/hanzoai/go-openai-realtime v1.0.0/go.mod h1:YUQQXTK9zAZvAWriSYm0PnzvApO0EbPiwTT07Ycqrtw=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+1 -1
View File
@@ -1,6 +1,6 @@
module github.com/hanzoai/go-openai-realtime/examples
go 1.19
go 1.27.1
require (
github.com/faiface/beep v1.1.0
+5
View File
@@ -1,9 +1,11 @@
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/WqyJh/jsontools v0.3.1 h1:zKT+DvxUSTji06ZcjsbQzZ48PycFZDI0OGATmmFhJ+U=
github.com/WqyJh/jsontools v0.3.1/go.mod h1:Gk2OlyXjAJmYNZ0aUbEXGHq4I5ihGRjXxVuUprWtkss=
github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
github.com/d4l3k/messagediff v1.2.2-0.20190829033028-7e0a312ae40b/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/faiface/beep v1.1.0 h1:A2gWP6xf5Rh7RG/p9/VAW2jRSDEGQm5sbOb38sf5d4c=
github.com/faiface/beep v1.1.0/go.mod h1:6I8p6kK2q4opL/eWb+kAkk38ehnTunWeToJB+s51sT4=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
@@ -33,7 +35,9 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8 h1:idBdZTd9UioThJp8KpM/rTSinK/ChZFBE43/WtIy8zg=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/image v0.0.0-20190220214146-31aff87c08e9/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
@@ -50,3 +54,4 @@ golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+1 -1
View File
@@ -27,7 +27,7 @@ func main() {
responseDeltaHandler := func(ctx context.Context, event openairt.ServerEvent) {
switch event.ServerEventType() {
case openairt.ServerEventTypeResponseTextDelta:
fmt.Printf(event.(openairt.ResponseTextDeltaEvent).Delta)
fmt.Print(event.(openairt.ResponseTextDeltaEvent).Delta)
}
}
+1 -1
View File
@@ -28,7 +28,7 @@ func main() {
responseDeltaHandler := func(ctx context.Context, event openairt.ServerEvent) {
switch event.ServerEventType() {
case openairt.ServerEventTypeResponseAudioTranscriptDelta:
fmt.Printf(event.(openairt.ResponseAudioTranscriptDeltaEvent).Delta)
fmt.Print(event.(openairt.ResponseAudioTranscriptDeltaEvent).Delta)
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
module github.com/hanzoai/go-openai-realtime
go 1.19
go 1.27.1
require (
github.com/WqyJh/jsontools v0.3.1
+69 -129
View File
@@ -22,10 +22,8 @@ func TestErrorEvent(t *testing.T) {
}
}`
expected := openairt.ErrorEvent{
ServerEventBase: openairt.ServerEventBase{
Type: openairt.ServerEventTypeError,
EventID: "event_890",
},
Type: openairt.ServerEventTypeError,
EventID: "event_890",
Error: openairt.Error{
Type: "invalid_request_error",
Code: "invalid_event",
@@ -108,10 +106,8 @@ func TestSessionCreatedEvent(t *testing.T) {
}`
temperature := float32(0.8)
expected := openairt.SessionCreatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1234",
Type: openairt.ServerEventTypeSessionCreated,
},
EventID: "event_1234",
Type: openairt.ServerEventTypeSessionCreated,
Session: openairt.ServerSession{
ID: "sess_001",
Object: "realtime.session",
@@ -123,12 +119,10 @@ func TestSessionCreatedEvent(t *testing.T) {
OutputAudioFormat: openairt.AudioFormatPcm16,
InputAudioTranscription: nil,
TurnDetection: &openairt.ServerTurnDetection{
Type: openairt.ServerTurnDetectionTypeServerVad,
TurnDetectionParams: openairt.TurnDetectionParams{
Threshold: 0.5,
PrefixPaddingMs: 300,
SilenceDurationMs: 200,
},
Type: openairt.ServerTurnDetectionTypeServerVad,
Threshold: 0.5,
PrefixPaddingMs: 300,
SilenceDurationMs: 200,
},
Tools: []openairt.Tool{},
ToolChoice: openairt.ServerToolChoice{String: openairt.ToolChoiceAuto},
@@ -169,10 +163,8 @@ func TestSessionUpdatedEvent(t *testing.T) {
}`
temperature := float32(0.7)
expected := openairt.SessionUpdatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_5678",
Type: openairt.ServerEventTypeSessionUpdated,
},
EventID: "event_5678",
Type: openairt.ServerEventTypeSessionUpdated,
Session: openairt.ServerSession{
ID: "sess_001",
Object: "realtime.session",
@@ -240,10 +232,8 @@ func TestConversationCreatedEvent(t *testing.T) {
}
}`
expected := openairt.ConversationCreatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_9101",
Type: openairt.ServerEventTypeConversationCreated,
},
EventID: "event_9101",
Type: openairt.ServerEventTypeConversationCreated,
Conversation: openairt.Conversation{
ID: "conv_001",
Object: "realtime.conversation",
@@ -275,10 +265,8 @@ func TestConversationItemCreatedEvent(t *testing.T) {
}
}`
expected := openairt.ConversationItemCreatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1920",
Type: openairt.ServerEventTypeConversationItemCreated,
},
EventID: "event_1920",
Type: openairt.ServerEventTypeConversationItemCreated,
PreviousItemID: "msg_002",
Item: openairt.ResponseMessageItem{
Object: "realtime.item",
@@ -311,10 +299,8 @@ func TestConversationItemInputAudioTranscriptionCompletedEvent(t *testing.T) {
"transcript": "Hello, how are you?"
}`
expected := openairt.ConversationItemInputAudioTranscriptionCompletedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_2122",
Type: openairt.ServerEventTypeConversationItemInputAudioTranscriptionCompleted,
},
EventID: "event_2122",
Type: openairt.ServerEventTypeConversationItemInputAudioTranscriptionCompleted,
ItemID: "msg_003",
ContentIndex: 1,
Transcript: "Hello, how are you?",
@@ -339,10 +325,8 @@ func TestConversationItemInputAudioTranscriptionFailedEvent(t *testing.T) {
}
}`
expected := openairt.ConversationItemInputAudioTranscriptionFailedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_2324",
Type: openairt.ServerEventTypeConversationItemInputAudioTranscriptionFailed,
},
EventID: "event_2324",
Type: openairt.ServerEventTypeConversationItemInputAudioTranscriptionFailed,
ItemID: "msg_003",
ContentIndex: 0,
Error: openairt.Error{
@@ -368,10 +352,8 @@ func TestConversationItemTruncatedEvent(t *testing.T) {
"audio_end_ms": 1500
}`
expected := openairt.ConversationItemTruncatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_2526",
Type: openairt.ServerEventTypeConversationItemTruncated,
},
EventID: "event_2526",
Type: openairt.ServerEventTypeConversationItemTruncated,
ItemID: "msg_004",
ContentIndex: 2,
AudioEndMs: 1500,
@@ -389,11 +371,9 @@ func TestConversationItemDeletedEvent(t *testing.T) {
"item_id": "msg_005"
}`
expected := openairt.ConversationItemDeletedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_2728",
Type: openairt.ServerEventTypeConversationItemDeleted,
},
ItemID: "msg_005",
EventID: "event_2728",
Type: openairt.ServerEventTypeConversationItemDeleted,
ItemID: "msg_005",
}
actual, err := openairt.UnmarshalServerEvent([]byte(data))
require.NoError(t, err)
@@ -409,10 +389,8 @@ func TestInputAudioBufferCommittedEvent(t *testing.T) {
"item_id": "msg_002"
}`
expected := openairt.InputAudioBufferCommittedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1121",
Type: openairt.ServerEventTypeInputAudioBufferCommitted,
},
EventID: "event_1121",
Type: openairt.ServerEventTypeInputAudioBufferCommitted,
PreviousItemID: "msg_001",
ItemID: "msg_002",
}
@@ -428,10 +406,8 @@ func TestInputAudioBufferClearedEvent(t *testing.T) {
"type": "input_audio_buffer.cleared"
}`
expected := openairt.InputAudioBufferClearedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1314",
Type: openairt.ServerEventTypeInputAudioBufferCleared,
},
EventID: "event_1314",
Type: openairt.ServerEventTypeInputAudioBufferCleared,
}
actual, err := openairt.UnmarshalServerEvent([]byte(data))
require.NoError(t, err)
@@ -447,10 +423,8 @@ func TestInputAudioBufferSpeechStartedEvent(t *testing.T) {
"item_id": "msg_003"
}`
expected := openairt.InputAudioBufferSpeechStartedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1516",
Type: openairt.ServerEventTypeInputAudioBufferSpeechStarted,
},
EventID: "event_1516",
Type: openairt.ServerEventTypeInputAudioBufferSpeechStarted,
AudioStartMs: 1000,
ItemID: "msg_003",
}
@@ -468,10 +442,8 @@ func TestInputAudioBufferSpeechStoppedEvent(t *testing.T) {
"item_id": "msg_003"
}`
expected := openairt.InputAudioBufferSpeechStoppedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_1718",
Type: openairt.ServerEventTypeInputAudioBufferSpeechStopped,
},
EventID: "event_1718",
Type: openairt.ServerEventTypeInputAudioBufferSpeechStopped,
AudioEndMs: 2000,
ItemID: "msg_003",
}
@@ -495,10 +467,8 @@ func TestResponseCreatedEvent(t *testing.T) {
}
}`
expected := openairt.ResponseCreatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_2930",
Type: openairt.ServerEventTypeResponseCreated,
},
EventID: "event_2930",
Type: openairt.ServerEventTypeResponseCreated,
Response: openairt.Response{
ID: "resp_001",
Object: "realtime.response",
@@ -550,10 +520,8 @@ func TestResponseDoneEvent(t *testing.T) {
}
}`
expected := openairt.ResponseDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_APnPcL4wUvPmXTFejvDzn",
Type: openairt.ServerEventTypeResponseDone,
},
EventID: "event_APnPcL4wUvPmXTFejvDzn",
Type: openairt.ServerEventTypeResponseDone,
Response: openairt.Response{
ID: "resp_APnPbMhvCmC0K8qZALSeI",
Object: "realtime.response",
@@ -562,16 +530,14 @@ func TestResponseDoneEvent(t *testing.T) {
Output: []openairt.ResponseMessageItem{
{
Object: "realtime.item",
MessageItem: openairt.MessageItem{
ID: "item_APnPbzHkH7zf8AteO9hdx",
Type: openairt.MessageItemTypeMessage,
Status: openairt.ItemStatusCompleted,
Role: openairt.MessageRoleAssistant,
Content: []openairt.MessageContentPart{
{
Type: openairt.MessageContentTypeAudio,
Transcript: "Hello! How can I help you today?",
},
ID: "item_APnPbzHkH7zf8AteO9hdx",
Type: openairt.MessageItemTypeMessage,
Status: openairt.ItemStatusCompleted,
Role: openairt.MessageRoleAssistant,
Content: []openairt.MessageContentPart{
{
Type: openairt.MessageContentTypeAudio,
Transcript: "Hello! How can I help you today?",
},
},
},
@@ -618,10 +584,8 @@ func TestResponseOutputItemAddedEvent(t *testing.T) {
}
}`
expected := openairt.ResponseOutputItemAddedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_3334",
Type: openairt.ServerEventTypeResponseOutputItemAdded,
},
EventID: "event_3334",
Type: openairt.ServerEventTypeResponseOutputItemAdded,
ResponseID: "resp_001",
OutputIndex: 10,
Item: openairt.ResponseMessageItem{
@@ -662,10 +626,8 @@ func TestResponseOutputItemDoneEvent(t *testing.T) {
}
}`
expected := openairt.ResponseOutputItemDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_3536",
Type: openairt.ServerEventTypeResponseOutputItemDone,
},
EventID: "event_3536",
Type: openairt.ServerEventTypeResponseOutputItemDone,
ResponseID: "resp_001",
OutputIndex: 0,
Item: openairt.ResponseMessageItem{
@@ -704,10 +666,8 @@ func TestResponseContentPartAddedEvent(t *testing.T) {
}
}`
expected := openairt.ResponseContentPartAddedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_3738",
Type: openairt.ServerEventTypeResponseContentPartAdded,
},
EventID: "event_3738",
Type: openairt.ServerEventTypeResponseContentPartAdded,
ResponseID: "resp_001",
ItemID: "msg_007",
OutputIndex: 1,
@@ -737,10 +697,8 @@ func TestResponseContentPartDoneEvent(t *testing.T) {
}
}`
expected := openairt.ResponseContentPartDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_3940",
Type: openairt.ServerEventTypeResponseContentPartDone,
},
EventID: "event_3940",
Type: openairt.ServerEventTypeResponseContentPartDone,
ResponseID: "resp_001",
ItemID: "msg_007",
OutputIndex: 0,
@@ -767,10 +725,8 @@ func TestResponseTextDelta(t *testing.T) {
"delta": "Sure, I can h"
}`
expected := openairt.ResponseTextDeltaEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_4142",
Type: openairt.ServerEventTypeResponseTextDelta,
},
EventID: "event_4142",
Type: openairt.ServerEventTypeResponseTextDelta,
ResponseID: "resp_001",
ItemID: "msg_007",
OutputIndex: 0,
@@ -794,10 +750,8 @@ func TestResponseTextDoneEvent(t *testing.T) {
"text": "Sure, I can help with that."
}`
expected := openairt.ResponseTextDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_4344",
Type: openairt.ServerEventTypeResponseTextDone,
},
EventID: "event_4344",
Type: openairt.ServerEventTypeResponseTextDone,
ResponseID: "resp_001",
ItemID: "msg_007",
OutputIndex: 0,
@@ -821,10 +775,8 @@ func TestResponseAudioTranscriptDelta(t *testing.T) {
"delta": "Hello, how can I a"
}`
expected := openairt.ResponseAudioTranscriptDeltaEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_4546",
Type: openairt.ServerEventTypeResponseAudioTranscriptDelta,
},
EventID: "event_4546",
Type: openairt.ServerEventTypeResponseAudioTranscriptDelta,
ResponseID: "resp_001",
ItemID: "msg_008",
OutputIndex: 1,
@@ -848,10 +800,8 @@ func TestResponseAudioTranscriptDoneEvent(t *testing.T) {
"transcript": "Hello, how can I assist you today?"
}`
expected := openairt.ResponseAudioTranscriptDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_4748",
Type: openairt.ServerEventTypeResponseAudioTranscriptDone,
},
EventID: "event_4748",
Type: openairt.ServerEventTypeResponseAudioTranscriptDone,
ResponseID: "resp_001",
ItemID: "msg_008",
OutputIndex: 0,
@@ -875,10 +825,8 @@ func TestResponseAudioDeltaEvent(t *testing.T) {
"delta": "Base64EncodedAudioDelta"
}`
expected := openairt.ResponseAudioDeltaEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_4950",
Type: openairt.ServerEventTypeResponseAudioDelta,
},
EventID: "event_4950",
Type: openairt.ServerEventTypeResponseAudioDelta,
ResponseID: "resp_001",
ItemID: "msg_008",
OutputIndex: 0,
@@ -901,10 +849,8 @@ func TestResponseAudioDoneEvent(t *testing.T) {
"content_index": 0
}`
expected := openairt.ResponseAudioDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_5152",
Type: openairt.ServerEventTypeResponseAudioDone,
},
EventID: "event_5152",
Type: openairt.ServerEventTypeResponseAudioDone,
ResponseID: "resp_001",
ItemID: "msg_008",
OutputIndex: 0,
@@ -927,10 +873,8 @@ func TestResponseFunctionCallArgumentsDelta(t *testing.T) {
"delta": "{\"location\": \"San\""
}`
expected := openairt.ResponseFunctionCallArgumentsDeltaEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_5354",
Type: openairt.ServerEventTypeResponseFunctionCallArgumentsDelta,
},
EventID: "event_5354",
Type: openairt.ServerEventTypeResponseFunctionCallArgumentsDelta,
ResponseID: "resp_002",
ItemID: "fc_001",
OutputIndex: 0,
@@ -954,10 +898,8 @@ func TestResponseFunctionCallArgumentsDoneEvent(t *testing.T) {
"arguments": "{\"location\": \"San Francisco\"}"
}`
expected := openairt.ResponseFunctionCallArgumentsDoneEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_5556",
Type: openairt.ServerEventTypeResponseFunctionCallArgumentsDone,
},
EventID: "event_5556",
Type: openairt.ServerEventTypeResponseFunctionCallArgumentsDone,
ResponseID: "resp_002",
ItemID: "fc_001",
OutputIndex: 1,
@@ -990,10 +932,8 @@ func TestRateLimitsUpdatedEvent(t *testing.T) {
]
}`
expected := openairt.RateLimitsUpdatedEvent{
ServerEventBase: openairt.ServerEventBase{
EventID: "event_5758",
Type: openairt.ServerEventTypeRateLimitsUpdated,
},
EventID: "event_5758",
Type: openairt.ServerEventTypeRateLimitsUpdated,
RateLimits: []openairt.RateLimit{
{
Name: "requests",
+2 -2
View File
@@ -19,7 +19,7 @@ import (
// only allows one message every 100ms with a 10 message burst.
type echoServer struct {
// logf controls where logs are sent.
logf func(f string, v ...interface{})
logf func(f string, v ...any)
// interval is the interval between each message.
interval time.Duration
}
@@ -96,7 +96,7 @@ type Server struct {
func NewServer(_ *testing.T, interval time.Duration) Server {
var testServer Server
testServer.Server = httptest.NewServer(echoServer{logf: func(f string, v ...interface{}) {
testServer.Server = httptest.NewServer(echoServer{logf: func(f string, v ...any) {
log.Printf("[test server] "+f, v...)
}, interval: interval})
testServer.URL = makeWsProto(testServer.Server.URL)