Releases: AgoraIO/agora-agents-go
Releases · AgoraIO/agora-agents-go
v2.2.1
v2.2.0
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.languagefromTurnDetectionConfig.Languagewhile keeping provider-specific STT language values underasr.params. - Deepgram keyterm — Added
Keytermsupport onDeepgramSTT, serialized asasr.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 routing —
NewVertexAILLMnow keeps project and location in the generated endpoint URL instead of duplicating them inllm.params.
Fixed
- Provider wire keys — Corrected alias-sensitive TTS payloads so Google TTS emits
VoiceSelectionParamsandAudioConfig, Rime TTS emitsmodelId, and Murf TTS preservesvoiceId. - 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
Release v2.1.1
v2.1.0
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 defaulten-USwhen 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 passthrough —
NewDeepgramTTSnow usesAdditionalParamsfor passthrough fields and flattens them intotts.params; the removed nestedparams.paramsshape is no longer documented or emitted. - OpenAI TTS — Docs and tests now reflect the generated core shape, including
InstructionsandSpeedundertts.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 asturn_detection.language. - Deepgram TTS explicit fields —
AdditionalParamscan no longer override explicitAPIKey,Model,BaseURL, orSampleRatevalues.
v2.0.0
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 indocs/reference/agent.md. AgoraClient.TelephonyandAgoraClient.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 TypeScriptXaiGrokshape.NewXAIGrokremains as a deprecated alias.vendors.NewGenericAvatarandIsGenericAvatar— Generic avatar wrapper for custom avatar providers.- Avatar parameter enrichment — Generic avatars get
agora_appid,agora_channel, andagora_tokenfrom the session when omitted; LiveAvatar and HeyGen getagora_tokenauto-generated when omitted. WithGreetingConfigs—llm.greeting_configs, including v2.7interruptable.GetTurnsOptionsandGetAllTurns— Turn pagination helpers.GetAllTurnsreturns the full response with aggregatedTurns.- Think action constants —
ThinkOnListeningAction*,ThinkOnThinkingAction*, andThinkOnSpeakingAction*for v2.7 Think actions. - Interruption constants —
InterruptionModeStartOfSpeech,InterruptionModeKeywords,InterruptionDisabledStrategyAppend, andInterruptionDisabledStrategyIgnorefor the v2.7interruptionobject. - Speak priority constants —
SpeakPriorityInterrupt,SpeakPriorityAppend, andSpeakPriorityIgnoreforAgentSession.Say. - MLLM turn detection constants —
MllmTurnDetectionModeAgoraVad,MllmTurnDetectionModeServerVad, andMllmTurnDetectionModeSemanticVadfor the MLLMturn_detection.modefield. AzureOpenAIOptions.Model— Emitsparams.modelfor 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(formerlyAgoraIO-Conversational-AI/agent-server-sdk-go). Update imports togithub.com/AgoraIO/agora-agents-go/v2. - Go module v2 path alignment —
go.modnow declaresmodule github.com/AgoraIO/agora-agents-go/v2, and all SDK imports/examples use/v2paths so standard Go module resolution works forv2.0.0. - ConvoAI token options —
GenerateConvoAIToken()now accepts an integerUIDand 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;SessionStatusis 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 asllm.url,llm.api_key, ortts.params.key.ToPropertiesMap— Builds vendor configs from maps directly for closer parity with Python and TypeScript AgentKit.GetTurns— Supportspage_indexandpage_size; callers with more than one page should paginate or callGetAllTurns.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 spreadAdditionalParamsfirst so required fields likeapi_key,quality, andagora_uidalways take precedence over caller overrides. OpenAIRealtime.ToConfig— ExplicitParams["model"]overrides the namedModel, matching the TypeScript SDK and the existing Gemini/Vertex AI/xAI Grok behavior.
Documentation
- Documented v2.7 error
reasoncodes, Think default behavior, event112, avatar token handling, Generic avatars, xAI Grok, Deepgram TTS, Murf, Anam, LiveAvatar,pause_state_enabled,audio_scenario, andpipeline_id.
Migration Notes
- Deprecated aliases remain for compatibility. Use
NewXaiGrok/XaiGrok/XaiGrokOptionsinstead ofNewXAIGrok/XAIGrok/XAIGrokOptions, andNewLiveAvatarAvatar/LiveAvatarAvatar/LiveAvatarAvatarOptionsinstead ofNewHeyGenAvatar/HeyGenAvatar/HeyGenAvatarOptions. - In v2.7, omitting
ThinkOptions.OnListeningActionuses the server defaultinterrupt. Passagentkit.ThinkOnListeningActionInject.Ptr()to preserve inject-style behavior. - Avatar
AgoraUIDshould be distinct from the sessionAgentUID. The SDK warns on collisions and preserves explicitly provided avatar tokens. - Go consumers should install and import via the
/v2module path, for example:go get github.com/AgoraIO/agora-agents-go/v2@v2.0.0.
v1.4.0
Added
- Added
NewDeepgramTTSAgentKit vendor support for Deepgram TTS beta. - Added
AgentSession.Think()andThinkWithOptions()for sending custom instructions to a
running agent through the Agent Management API. - Added
Agent.WithInterruption()andWithInterruptionConfig()for the new top-level
interruptionconfiguration. - Added MLLM turn detection support through
TurnDetectiononNewOpenAIRealtime,
NewGeminiLive, andNewVertexAI. - Added
Agent.WithTools()andWithTools()option for enabling MCP tool invocation. - Added
AudioScenarioAgentKit support forparameters.audio_scenario. - Added
Headersfield to all LLM vendors:NewOpenAI,NewAzureOpenAI,NewAnthropic, and
NewGemini.
Changed
Agent.WithMllm()now setsmllm.enable = trueand 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, andurlbefore sending requests. - Fixed preset-backed
NewOpenAITTSsoAPIKeyis 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
Added
Agent.CreateSession(...)for ergonomic session creation from anAgent.- Session preset support, including preset normalization and preset /
pipeline_idforwarding at start time. AgentSession.GetTurns()for turn analytics without dropping to the raw client.AgentSession.Off(...)for unregistering event handlers.AgentSessionDebugandWarnoptions for session-level logging and warning hooks.vendors.NewGeminiLive(...),vendors.NewLiveAvatarAvatar(...), andvendors.NewAnamAvatar(...).agentkit/presets.gohelper 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
messagesplacement 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
Added
Agent.CreateSession(...)for ergonomic session creation from anAgent.- Session preset support, including preset normalization and preset /
pipeline_idforwarding at start time. AgentSession.GetTurns()for turn analytics without dropping to the raw client.AgentSession.Off(...)for unregistering event handlers.AgentSessionDebugandWarnoptions for session-level logging and warning hooks.vendors.NewGeminiLive(...),vendors.NewLiveAvatarAvatar(...), andvendors.NewAnamAvatar(...).agentkit/presets.gohelper 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
messagesplacement 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
Added
Agent.CreateSession(...)for ergonomic session creation from anAgent.- Session preset support, including preset normalization and preset /
pipeline_idforwarding at start time. AgentSession.GetTurns()for turn analytics without dropping to the raw client.AgentSession.Off(...)for unregistering event handlers.AgentSessionDebugandWarnoptions for session-level logging and warning hooks.vendors.NewGeminiLive(...),vendors.NewLiveAvatarAvatar(...), andvendors.NewAnamAvatar(...).agentkit/presets.gohelper 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
messagesplacement 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
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_idthroughAgent.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
- Deepgram STT:
- 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
DebugandWarnsession options for parity with the richer session lifecycle behavior. - Added avatar vendor coverage for:
LiveAvatarAvatarAnamAvatar
- 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
messagesplacement to match the generated API shape
- Added focused tests for:
GetTurns()- preset /
pipeline_idforwarding - 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, andWarn - updated vendor docs to reflect the conservative MLLM contract
- updated MLLM flow examples to match current wrapper APIs
- updated session docs for
- 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/...