Skip to content

Releases: AgoraIO/agora-agents-go

v2.2.1

12 Jun 16:13
85d8519

Choose a tag to compare

Release v2.2.1

v2.2.0

05 Jun 18:42
v2.2.0
5f4ac0c

Choose a tag to compare

Added

  • Expanded provider surface — Added generated API support for the latest Conversational AI vendors and configuration types, including Dify LLM and Generic Avatar.
  • Interaction language handling — AgentKit now consistently derives REST asr.language from TurnDetectionConfig.Language while keeping provider-specific STT language values under asr.params.
  • Deepgram keyterm — Added Keyterm support on DeepgramSTT, serialized as asr.params.keyterm.

Changed

  • MiniMax managed presets — MiniMax preset-backed TTS now keeps the preset model as an internal hint while sending only supported partial TTS settings such as voice_setting.voice_id.
  • Vertex AI LLM routingNewVertexAILLM now keeps project and location in the generated endpoint URL instead of duplicating them in llm.params.

Fixed

  • Provider wire keys — Corrected alias-sensitive TTS payloads so Google TTS emits VoiceSelectionParams and AudioConfig, Rime TTS emits modelId, and Murf TTS preserves voiceId.
  • AgentKit request validation — Start request validation preserves generated wire keys while still allowing preset and pipeline-backed partial configs.
  • Request body coverage — Added regression tests for BYOK, preset-backed, mixed preset/BYOK, and pipeline override request shapes across provider configurations.
  • TTS vendor tests — Added Microsoft TTS coverage to the vendor helper test matrix.

v2.1.1

03 Jun 14:24
v2.1.1
724d0c1

Choose a tag to compare

Release v2.1.1

v2.1.0

02 Jun 19:50
962ca97

Choose a tag to compare

Added

  • Turn detection language — AgentKit now manages Agora interaction language through TurnDetectionConfig.Language, validates it against the supported BCP-47 language list, and sends the default en-US when no language is provided.
  • Provider parameter parity — ASR, LLM, MLLM, TTS, and avatar wrappers expose typed provider parameters plus passthrough fields where the generated core supports additional properties.

Changed

  • Generated core refresh — Regenerated core types from the v2.1 API schema.
  • Deepgram TTS passthroughNewDeepgramTTS now uses AdditionalParams for passthrough fields and flattens them into tts.params; the removed nested params.params shape is no longer documented or emitted.
  • OpenAI TTS — Docs and tests now reflect the generated core shape, including Instructions and Speed under tts.params.
  • TTS provider docs — Updated TTS provider reference tables to match implemented wrapper fields and generated core params.

Fixed

  • Managed-provider validation — AgentKit validation now distinguishes preset-backed providers from BYOK providers so required provider fields are only required when credentials are caller-supplied.
  • Language placement — Provider-specific STT language values remain under asr.params, while Agora interaction language is emitted separately as turn_detection.language.
  • Deepgram TTS explicit fieldsAdditionalParams can no longer override explicit APIKey, Model, BaseURL, or SampleRate values.

v2.0.0

28 May 17:02

Choose a tag to compare

AgentKit alignment for Conversational AI v2.7.

Added

  • Alias parity — Exported SttConfig, session/conversation type aliases, IsAvatarTokenManaged, think type aliases, and cross-SDK discovery table in docs/reference/agent.md.
  • AgoraClient.Telephony and AgoraClient.PhoneNumbers — AgentKit callers can reach the v2.7 telephony and phone-number REST endpoints without rebuilding the generated client.
  • vendors.NewXaiGrok — xAI Grok MLLM sessions (mllm.vendor: "xai"), matching the TypeScript XaiGrok shape. NewXAIGrok remains as a deprecated alias.
  • vendors.NewGenericAvatar and IsGenericAvatar — Generic avatar wrapper for custom avatar providers.
  • Avatar parameter enrichment — Generic avatars get agora_appid, agora_channel, and agora_token from the session when omitted; LiveAvatar and HeyGen get agora_token auto-generated when omitted.
  • WithGreetingConfigsllm.greeting_configs, including v2.7 interruptable.
  • GetTurnsOptions and GetAllTurns — Turn pagination helpers. GetAllTurns returns the full response with aggregated Turns.
  • Think action constantsThinkOnListeningAction*, ThinkOnThinkingAction*, and ThinkOnSpeakingAction* for v2.7 Think actions.
  • Interruption constantsInterruptionModeStartOfSpeech, InterruptionModeKeywords, InterruptionDisabledStrategyAppend, and InterruptionDisabledStrategyIgnore for the v2.7 interruption object.
  • Speak priority constantsSpeakPriorityInterrupt, SpeakPriorityAppend, and SpeakPriorityIgnore for AgentSession.Say.
  • MLLM turn detection constantsMllmTurnDetectionModeAgoraVad, MllmTurnDetectionModeServerVad, and MllmTurnDetectionModeSemanticVad for the MLLM turn_detection.mode field.
  • AzureOpenAIOptions.Model — Emits params.model for parity with the TypeScript SDK; Azure ignores the value for chat completions, but downstream tooling and logs surface it.

Changed

  • Repository and module path — The repository has been updated to AgoraIO/agora-agents-go (formerly AgoraIO-Conversational-AI/agent-server-sdk-go). Update imports to github.com/AgoraIO/agora-agents-go/v2.
  • Go module v2 path alignmentgo.mod now declares module github.com/AgoraIO/agora-agents-go/v2, and all SDK imports/examples use /v2 paths so standard Go module resolution works for v2.0.0.
  • ConvoAI token optionsGenerateConvoAIToken() now accepts an integer UID and handles the internal token string conversion for users, agents, and avatars.
  • Avatar token generation — Removed the dedicated GenerateAvatarRtcToken() wrapper; avatar RTC tokens use the existing ConvoAI token helper.
  • Session lifecycle naming — Renamed the AgentKit lifecycle type to AgentSessionLifecycle; SessionStatus is now the generated API status alias.
  • AgentSession.Start — Sends a map-based join payload after preset resolution, preventing generated structs from reintroducing empty provider-owned fields such as llm.url, llm.api_key, or tts.params.key.
  • ToPropertiesMap — Builds vendor configs from maps directly for closer parity with Python and TypeScript AgentKit.
  • GetTurns — Supports page_index and page_size; callers with more than one page should paginate or call GetAllTurns.
  • Agent.ToPropertiesMap — Rejects MLLM + enabled avatar combinations before generating tokens or building properties; avatars currently require the cascading ASR/LLM/TTS pipeline.
  • Avatar vendor ToConfig() — HeyGen, LiveAvatar, Akool, Anam, and Generic now spread AdditionalParams first so required fields like api_key, quality, and agora_uid always take precedence over caller overrides.
  • OpenAIRealtime.ToConfig — Explicit Params["model"] overrides the named Model, matching the TypeScript SDK and the existing Gemini/Vertex AI/xAI Grok behavior.

Documentation

  • Documented v2.7 error reason codes, Think default behavior, event 112, avatar token handling, Generic avatars, xAI Grok, Deepgram TTS, Murf, Anam, LiveAvatar, pause_state_enabled, audio_scenario, and pipeline_id.

Migration Notes

  • Deprecated aliases remain for compatibility. Use NewXaiGrok / XaiGrok / XaiGrokOptions instead of NewXAIGrok / XAIGrok / XAIGrokOptions, and NewLiveAvatarAvatar / LiveAvatarAvatar / LiveAvatarAvatarOptions instead of NewHeyGenAvatar / HeyGenAvatar / HeyGenAvatarOptions.
  • In v2.7, omitting ThinkOptions.OnListeningAction uses the server default interrupt. Pass agentkit.ThinkOnListeningActionInject.Ptr() to preserve inject-style behavior.
  • Avatar AgoraUID should be distinct from the session AgentUID. The SDK warns on collisions and preserves explicitly provided avatar tokens.
  • Go consumers should install and import via the /v2 module path, for example: go get github.com/AgoraIO/agora-agents-go/v2@v2.0.0.

v1.4.0

13 May 16:43
v1.4.0
72bb423

Choose a tag to compare

Added

  • Added NewDeepgramTTS AgentKit vendor support for Deepgram TTS beta.
  • Added AgentSession.Think() and ThinkWithOptions() for sending custom instructions to a
    running agent through the Agent Management API.
  • Added Agent.WithInterruption() and WithInterruptionConfig() for the new top-level
    interruption configuration.
  • Added MLLM turn detection support through TurnDetection on NewOpenAIRealtime,
    NewGeminiLive, and NewVertexAI.
  • Added Agent.WithTools() and WithTools() option for enabling MCP tool invocation.
  • Added AudioScenario AgentKit support for parameters.audio_scenario.
  • Added Headers field to all LLM vendors: NewOpenAI, NewAzureOpenAI, NewAnthropic, and
    NewGemini.

Changed

  • Agent.WithMllm() now sets mllm.enable = true and no longer emits deprecated
    advanced_features.enable_mllm.
  • MLLM vendors now match the v2.6 API shape and no longer emit removed fields such as style.

Fixed

  • Fixed MiniMax TTS preset stripping so inferred reseller presets remove key, model,
    group_id, and url before sending requests.
  • Fixed preset-backed NewOpenAITTS so APIKey is optional when credentials are supplied server-
    side by a reseller preset.
  • Expanded AgentKit parity coverage for interruption, MLLM turn detection, Deepgram TTS, LLM
    headers, MLLM enable behavior, and preset-backed OpenAI TTS.

Full Changelog: v1.3.4...v1.4.0

v1.3.4

28 Apr 10:03
v1.3.4
78cb3c9

Choose a tag to compare

Added

  • Agent.CreateSession(...) for ergonomic session creation from an Agent.
  • Session preset support, including preset normalization and preset / pipeline_id forwarding at start time.
  • AgentSession.GetTurns() for turn analytics without dropping to the raw client.
  • AgentSession.Off(...) for unregistering event handlers.
  • AgentSession Debug and Warn options for session-level logging and warning hooks.
  • vendors.NewGeminiLive(...), vendors.NewLiveAvatarAvatar(...), and vendors.NewAnamAvatar(...).
  • agentkit/presets.go helper utilities for preset inference and normalization.

Changed

  • Aligned Go AgentKit session, avatar, and MLLM wrappers with the conservative low-level SDK contract.
  • Removed unsupported MLLM wrapper-only fields and kept wrapper behavior limited to generated API-backed fields.
  • Corrected Gemini and Vertex MLLM messages placement to match the generated contract.
  • Updated Go AgentKit docs and examples to reflect the supported session and MLLM APIs.

Fixed

  • Preset-backed sessions now work without requiring explicit LLM/TTS configuration when the low-level contract allows it.
  • Avatar validation and sample-rate warnings now match the current wrapper behavior.
  • Added focused tests for preset flow, GetTurns, event unregistration, avatar support, and MLLM shape enforcement.

v1.3.3

28 Apr 01:26
v1.3.3
ffa5223

Choose a tag to compare

Added

  • Agent.CreateSession(...) for ergonomic session creation from an Agent.
  • Session preset support, including preset normalization and preset / pipeline_id forwarding at start time.
  • AgentSession.GetTurns() for turn analytics without dropping to the raw client.
  • AgentSession.Off(...) for unregistering event handlers.
  • AgentSession Debug and Warn options for session-level logging and warning hooks.
  • vendors.NewGeminiLive(...), vendors.NewLiveAvatarAvatar(...), and vendors.NewAnamAvatar(...).
  • agentkit/presets.go helper utilities for preset inference and normalization.

Changed

  • Aligned Go AgentKit session, avatar, and MLLM wrappers with the conservative low-level SDK contract.
  • Removed unsupported MLLM wrapper-only fields and kept wrapper behavior limited to generated API-backed fields.
  • Corrected Gemini and Vertex MLLM messages placement to match the generated contract.
  • Updated Go AgentKit docs and examples to reflect the supported session and MLLM APIs.

Fixed

  • Preset-backed sessions now work without requiring explicit LLM/TTS configuration when the low-level contract allows it.
  • Avatar validation and sample-rate warnings now match the current wrapper behavior.
  • Added focused tests for preset flow, GetTurns, event unregistration, avatar support, and MLLM shape enforcement.

v1.3.2

24 Apr 00:46
v1.3.2
65c57e8

Choose a tag to compare

Added

  • Agent.CreateSession(...) for ergonomic session creation from an Agent.
  • Session preset support, including preset normalization and preset / pipeline_id forwarding at start time.
  • AgentSession.GetTurns() for turn analytics without dropping to the raw client.
  • AgentSession.Off(...) for unregistering event handlers.
  • AgentSession Debug and Warn options for session-level logging and warning hooks.
  • vendors.NewGeminiLive(...), vendors.NewLiveAvatarAvatar(...), and vendors.NewAnamAvatar(...).
  • agentkit/presets.go helper utilities for preset inference and normalization.

Changed

  • Aligned Go AgentKit session, avatar, and MLLM wrappers with the conservative low-level SDK contract.
  • Removed unsupported MLLM wrapper-only fields and kept wrapper behavior limited to generated API-backed fields.
  • Corrected Gemini and Vertex MLLM messages placement to match the generated contract.
  • Updated Go AgentKit docs and examples to reflect the supported session and MLLM APIs.

Fixed

  • Preset-backed sessions now work without requiring explicit LLM/TTS configuration when the low-level contract allows it.
  • Avatar validation and sample-rate warnings now match the current wrapper behavior.
  • Added focused tests for preset flow, GetTurns, event unregistration, avatar support, and MLLM shape enforcement.

1.3.0

02 Apr 17:01
c4a9452

Choose a tag to compare

This release brings Conversational AI Engine v2.5 capabilities to the Go AgentKit, with a focus on session ergonomics, preset support, avatar coverage, and docs correctness.

What’s included

  • Added first-class AgentKit support for conversation turn analytics via AgentSession.GetTurns().
  • Bubbled session-level preset and pipeline_id through Agent.CreateSession(...) / AgentSession.Start(...).
  • Added exported Go preset constants and helpers for discoverable session preset usage.
  • Added preset normalization so presets can be passed as either comma-separated strings or string slices.
  • Added automatic preset inference for supported reseller-backed models when credentials are omitted:
    • Deepgram STT: nova-2, nova-3
    • OpenAI LLM: gpt-4o-mini, gpt-4.1-mini, gpt-5-nano, gpt-5-mini
    • OpenAI TTS: tts-1
    • MiniMax TTS: speech-2.6-turbo, speech-2.8-turbo
  • Preserved BYOK behavior for the same preset-capable models when credentials are provided.
  • Added type-safe guardrails so missing credentials are only allowed for supported reseller-backed models.
  • Added AgentSession.Off(...) for unregistering event handlers.
  • Added Debug and Warn session options for parity with the richer session lifecycle behavior.
  • Added avatar vendor coverage for:
    • LiveAvatarAvatar
    • AnamAvatar
  • Aligned the Go MLLM wrappers with the low-level SDK contract:
    • removed unsupported wrapper-only MLLM fields
    • kept only the documented/generated top-level MLLM fields
    • corrected Gemini/Vertex messages placement to match the generated API shape
  • Added focused tests for:
    • GetTurns()
    • preset / pipeline_id forwarding
    • preset arrays
    • inferred reseller presets
    • avatar vendor mapping and validation behavior
    • conservative MLLM shape enforcement
    • event handler removal and warning hooks
  • Fixed Go docs and references:
    • updated session docs for GetTurns, Off, Debug, and Warn
    • updated vendor docs to reflect the conservative MLLM contract
    • updated MLLM flow examples to match current wrapper APIs
  • Synced lockfile/module metadata for the new dependency required by the token helpers.

Why this matters

Developers can now use the newer AgentKit session and preset capabilities in Go without dropping to raw generated APIs, while keeping the wrapper conservative
and aligned with the low-level SDK contract.

Validation

  • go test ./agentkit/...