avartha-python-sdk 0.0.7__tar.gz → 0.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {avartha_python_sdk-0.0.7/src/avartha_python_sdk.egg-info → avartha_python_sdk-0.0.8}/PKG-INFO +13 -10
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/README.md +19 -26
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/docs/compatibility.md +68 -11
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/docs/migration.md +21 -18
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/docs/platform.md +27 -22
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/docs/pypi.md +12 -9
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/docs/voice-conversations.md +14 -100
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/examples/realtime.py +4 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/examples/realtime_asr.py +2 -2
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/examples/tts.py +17 -8
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/examples/tts_multi_context.py +16 -2
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/examples/voice_conversation.py +4 -3
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_conversation_resources.py +7 -207
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_realtime_tts.py +97 -39
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_speech_http.py +9 -22
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/conversational_ai.py +1 -26
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/voice_agents.py +0 -6
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8/src/avartha_python_sdk.egg-info}/PKG-INFO +13 -10
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/LICENSE +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/MANIFEST.in +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/THIRD_PARTY_NOTICES +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/pyproject.toml +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/setup.cfg +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/setup.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_exceptions.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_http_errors.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_models.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_openai_http.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_openai_http_errors.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_pacing.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_realtime_asr.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_realtime_openai.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_realtime_resources.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_realtime_sampling.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_sentinels.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_speech_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_speech_resources.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_unsupported.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_websocket.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/_ws_state.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/client.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/control.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/conversational_ai/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/conversational_ai/conversation.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/elevenlabs.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/errors.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/openai.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/pagination.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/py.typed +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/realtime/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/realtime/speech.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/resources/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/resources/models.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/resources/realtime/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/resources/realtime/realtime.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/audio/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/audio/transcription_language.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/audio_transcription.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/audio_transcription_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_created_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_added.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_create_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_create_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_created_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_delete_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_delete_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_deleted_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_done.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_input_audio_transcription_completed_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_input_audio_transcription_delta_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_input_audio_transcription_failed_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_input_audio_transcription_segment.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_retrieve_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_retrieve_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_truncate_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_truncate_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/conversation_item_truncated_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_append_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_append_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_clear_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_clear_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_cleared_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_commit_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_commit_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_committed_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_dtmf_event_received_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_speech_started_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_speech_stopped_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/input_audio_buffer_timeout_triggered.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/log_prob_properties.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/mcp_list_tools_completed.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/mcp_list_tools_failed.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/mcp_list_tools_in_progress.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/noise_reduction_type.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/output_audio_buffer_clear_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/output_audio_buffer_clear_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/rate_limits_updated_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config_input.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config_input_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config_output.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config_output_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_config_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_formats.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_formats_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_input_turn_detection.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_audio_input_turn_detection_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_client_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_client_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_assistant_message.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_assistant_message_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_function_call.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_function_call_output.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_function_call_output_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_function_call_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_system_message.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_system_message_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_user_message.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_conversation_item_user_message_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_error.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_error_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_function_tool.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_function_tool_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_approval_request.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_approval_request_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_approval_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_approval_response_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_list_tools.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_list_tools_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_protocol_error.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_protocol_error_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_tool_call.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_tool_call_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_tool_execution_error.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcp_tool_execution_error_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcphttp_error.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_mcphttp_error_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_reasoning.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_reasoning_effort.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_reasoning_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_audio_output.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_audio_output_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_mcp_tool.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_mcp_tool_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_params.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_create_params_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_status.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_usage.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_usage_input_token_details.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_response_usage_output_token_details.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_server_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_session_create_request.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_session_create_request_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tool_choice_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tool_choice_config_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tools_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tools_config_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tools_config_union.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tracing_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_tracing_config_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio_input.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio_input_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio_input_turn_detection.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio_input_turn_detection_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_audio_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_create_request.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_transcription_session_create_request_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_truncation.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_truncation_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_truncation_retention_ratio.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/realtime_truncation_retention_ratio_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_audio_delta_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_audio_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_audio_transcript_delta_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_audio_transcript_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_cancel_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_cancel_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_content_part_added_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_content_part_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_create_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_create_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_created_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_function_call_arguments_delta_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_function_call_arguments_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_mcp_call_arguments_delta.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_mcp_call_arguments_done.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_mcp_call_completed.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_mcp_call_failed.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_mcp_call_in_progress.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_output_item_added_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_output_item_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_text_delta_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/response_text_done_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/session_created_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/session_update_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/session_update_event_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/realtime/session_updated_event.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/image_detail.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_file.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_file_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_image.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_image_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_text.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_input_text_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_prompt.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/response_prompt_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/tool_choice_function.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/tool_choice_function_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/tool_choice_mcp.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/tool_choice_mcp_param.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/responses/tool_choice_options.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/shared/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/shared/metadata.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/shared_params/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/shared_params/metadata.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/__init__.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/alignment.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/audio_output_multi.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/close_context.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/close_socket.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/final_output_multi.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/fine_tuning_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/fine_tuning_response_state_value.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/flush_context.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/generation_config.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/get_voices_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/get_voices_v_2_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/initialize_connection_multi.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/language_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/manual_verification_file_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/manual_verification_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/model_rates_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/normalized_alignment.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/output_format.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/pronunciation_dictionary_locator.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/reader_resource_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/reader_resource_response_model_resource_type.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/realtime_voice_settings.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/recording_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/review_status.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/send_text_multi.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/speaker_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/speaker_separation_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/speaker_separation_response_model_status.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/utterance_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/verification_attempt_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/verified_voice_language_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_category.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_labelling_status.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_recording_quality.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_safety_control.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_sample.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_settings.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_sharing_moderation_check_response_model.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_sharing_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_sharing_response_category.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_sharing_state.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech/voice_verification_response.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/speech_language.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/websocket_connection_options.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha/types/websocket_reconnection.py +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha_python_sdk.egg-info/SOURCES.txt +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha_python_sdk.egg-info/dependency_links.txt +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha_python_sdk.egg-info/requires.txt +0 -0
- {avartha_python_sdk-0.0.7 → avartha_python_sdk-0.0.8}/src/avartha_python_sdk.egg-info/top_level.txt +0 -0
{avartha_python_sdk-0.0.7/src/avartha_python_sdk.egg-info → avartha_python_sdk-0.0.8}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: avartha-python-sdk
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: Python clients for Avartha Realtime text, streaming speech, and platform management
|
|
5
5
|
Author-email: "Avartha Inc." <team@avartha.ai>
|
|
6
6
|
License-Expression: LicenseRef-Avartha-Proprietary
|
|
@@ -33,11 +33,12 @@ Dynamic: license-file
|
|
|
33
33
|
|
|
34
34
|
Synchronous and asynchronous Python clients for Avartha Realtime text,
|
|
35
35
|
streaming speech, and platform management. Requires Python 3.12+.
|
|
36
|
+
The guides and examples below use SDK 0.0.7 or later.
|
|
36
37
|
|
|
37
38
|
## Install
|
|
38
39
|
|
|
39
40
|
```sh
|
|
40
|
-
python -m pip install avartha-python-sdk
|
|
41
|
+
python -m pip install --upgrade 'avartha-python-sdk>=0.0.7'
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
Configure your Avartha API key and platform root:
|
|
@@ -55,15 +56,18 @@ to your workspace. Unsupported tier values and dedicated inference URLs raise
|
|
|
55
56
|
## Discover models
|
|
56
57
|
|
|
57
58
|
```python
|
|
58
|
-
from avartha import
|
|
59
|
+
from avartha import Avartha
|
|
59
60
|
|
|
60
|
-
with
|
|
61
|
+
with Avartha() as client:
|
|
61
62
|
for model in client.models.list():
|
|
62
63
|
print(model.id, model.to_dict().get("protocols", []))
|
|
64
|
+
for model in client.elevenlabs.models.list():
|
|
65
|
+
print(model.model_id, getattr(model, "protocols", []))
|
|
63
66
|
```
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
speech
|
|
68
|
+
`client.models` lists Voice LLMs; choose `openai_realtime` for text.
|
|
69
|
+
`client.elevenlabs.models` lists speech models; choose `elevenlabs_tts` for
|
|
70
|
+
speech synthesis or `elevenlabs_asr` for speech recognition.
|
|
67
71
|
|
|
68
72
|
## Generate text
|
|
69
73
|
|
|
@@ -111,11 +115,10 @@ Inference consumes credits.
|
|
|
111
115
|
| Workspaces, members, invitations | `Control` / `AsyncControl` |
|
|
112
116
|
| Voice agents: create, edit, publish, restore, delete | `Control` / `AsyncControl`: `voice_agents` |
|
|
113
117
|
| Live conversations with published agents | `avartha.conversational_ai`: `Conversation`, `AsyncConversation` |
|
|
114
|
-
| Placing phone calls from Twilio numbers | `ElevenLabs` / `AsyncElevenLabs`: `conversational_ai.twilio.outbound_call` |
|
|
115
118
|
| Combined inference and management | `Avartha` / `AsyncAvartha` |
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
This SDK provides model inference over WebSockets; it does not wrap HTTP
|
|
121
|
+
Chat Completions, Responses, speech synthesis, or file transcription. ElevenLabs-schema agent management is not
|
|
119
122
|
implemented, and accessing it under `conversational_ai` raises `NotImplementedError`.
|
|
120
123
|
|
|
121
124
|
## Migrating and handling errors
|
|
@@ -140,4 +143,4 @@ never retried automatically.
|
|
|
140
143
|
The [source archive on PyPI](https://pypi.org/project/avartha-python-sdk/#files)
|
|
141
144
|
includes `README.md`, customer guides in `docs/`, and runnable examples in
|
|
142
145
|
`examples/`. Download and unpack the archive to read the migration, compatibility,
|
|
143
|
-
and platform-management guides and run the text, speech, and
|
|
146
|
+
and platform-management guides and run the text, speech, and voice-agent examples.
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Synchronous and asynchronous Python clients for Avartha Realtime LLMs,
|
|
6
6
|
streaming speech, and platform management. Requires Python 3.12+.
|
|
7
|
+
The guides and examples below use SDK 0.0.7 or later.
|
|
7
8
|
|
|
8
9
|
**Familiar Python interfaces for OpenAI Realtime and ElevenLabs speech.** Change
|
|
9
10
|
client, type, and exception imports, then configure Avartha credentials, URLs,
|
|
@@ -20,9 +21,11 @@ and model/voice IDs. The supported APIs use the same method names and event loop
|
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
Neither vendor SDK needs to be installed. Avartha supports Realtime text,
|
|
23
|
-
streaming speech, HTTP discovery, and platform management.
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
streaming speech, HTTP discovery, and platform management. This SDK uses
|
|
25
|
+
WebSockets for model inference. It does not wrap HTTP Chat Completions,
|
|
26
|
+
Responses, or speech synthesis. Enabled platform HTTP endpoints have their
|
|
27
|
+
own model and workspace prerequisites. See the guides below for supported
|
|
28
|
+
features and migration steps.
|
|
26
29
|
|
|
27
30
|
## Documentation
|
|
28
31
|
|
|
@@ -36,7 +39,7 @@ unavailable. See the guides below for supported features and migration steps.
|
|
|
36
39
|
Install from [PyPI](https://pypi.org/project/avartha-python-sdk/):
|
|
37
40
|
|
|
38
41
|
```sh
|
|
39
|
-
python -m pip install avartha-python-sdk
|
|
42
|
+
python -m pip install --upgrade 'avartha-python-sdk>=0.0.7'
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
Set your Avartha API key and platform root. Update `AVARTHA_BASE_URL` to match
|
|
@@ -88,16 +91,19 @@ and response on the same connection to preserve conversation state.
|
|
|
88
91
|
To discover available models and their enabled protocols:
|
|
89
92
|
|
|
90
93
|
```python
|
|
91
|
-
from avartha import
|
|
94
|
+
from avartha import Avartha
|
|
92
95
|
|
|
93
|
-
with
|
|
96
|
+
with Avartha() as client:
|
|
94
97
|
for model in client.models.list():
|
|
95
98
|
print(model.id, model.to_dict().get("protocols", []))
|
|
99
|
+
for model in client.elevenlabs.models.list():
|
|
100
|
+
print(model.model_id, getattr(model, "protocols", []))
|
|
96
101
|
```
|
|
97
102
|
|
|
98
103
|
Model availability depends on your workspace and environment. Replace
|
|
99
|
-
the example IDs with models returned for your key
|
|
100
|
-
`openai_realtime
|
|
104
|
+
the example IDs with models returned for your key. `client.models` lists
|
|
105
|
+
Voice LLMs; choose `openai_realtime` for text. `client.elevenlabs.models` lists
|
|
106
|
+
speech models; choose `elevenlabs_tts` or `elevenlabs_asr` for speech.
|
|
101
107
|
|
|
102
108
|
## Async usage
|
|
103
109
|
|
|
@@ -169,6 +175,7 @@ G.711 (`ulaw_8000`, `alaw_8000`). This example writes 24 kHz PCM to a WAV file:
|
|
|
169
175
|
|
|
170
176
|
```python
|
|
171
177
|
import wave
|
|
178
|
+
from contextlib import closing
|
|
172
179
|
from avartha import ElevenLabs
|
|
173
180
|
|
|
174
181
|
with ElevenLabs() as client:
|
|
@@ -178,7 +185,7 @@ with ElevenLabs() as client:
|
|
|
178
185
|
output_format="pcm_24000",
|
|
179
186
|
text=iter(["Welcome. ", "How can I help?"]),
|
|
180
187
|
)
|
|
181
|
-
with wave.open("welcome.wav", "wb") as output:
|
|
188
|
+
with closing(audio), wave.open("welcome.wav", "wb") as output:
|
|
182
189
|
output.setnchannels(1)
|
|
183
190
|
output.setsampwidth(2)
|
|
184
191
|
output.setframerate(24000)
|
|
@@ -225,8 +232,9 @@ Use `AsyncAvartha` or `AsyncElevenLabs` for an async application. See the
|
|
|
225
232
|
[live STT execution guidance](docs/migration.md#live-speech-to-text) for scripts
|
|
226
233
|
and applications with an existing event loop.
|
|
227
234
|
|
|
228
|
-
|
|
229
|
-
|
|
235
|
+
ASR accepts mono PCM16 at 8, 16, 22.05, 24, 44.1, or 48 kHz, and 8 kHz mu-law.
|
|
236
|
+
Choose the `AudioFormat` and `sample_rate` that match your samples; the server
|
|
237
|
+
resamples them, and the SDK sends chunks unchanged.
|
|
230
238
|
Await a committed transcript before closing the session.
|
|
231
239
|
[The complete example](examples/realtime_asr.py) reads a WAV file, registers
|
|
232
240
|
transcript/error callbacks, streams chunks, commits, and closes the connection:
|
|
@@ -294,21 +302,6 @@ with ElevenLabs() as client:
|
|
|
294
302
|
conversation.wait_for_session_end()
|
|
295
303
|
```
|
|
296
304
|
|
|
297
|
-
An agent can also call someone from one of the workspace's Twilio numbers. Pass an
|
|
298
|
-
`idempotency_key`, so a retry can't ring them twice, and check `placed.success`:
|
|
299
|
-
|
|
300
|
-
```python
|
|
301
|
-
placed = client.conversational_ai.twilio.outbound_call(
|
|
302
|
-
agent_id="your-agent-id",
|
|
303
|
-
agent_phone_number_id="your-twilio-number-id",
|
|
304
|
-
to_number="+14155550100",
|
|
305
|
-
idempotency_key="order-1042-reminder",
|
|
306
|
-
)
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
See [placing a phone call](docs/voice-conversations.md#placing-a-phone-call) for its
|
|
310
|
-
prerequisites and how to follow the call.
|
|
311
|
-
|
|
312
305
|
ElevenLabs-schema agent management, tools, and knowledge bases are not implemented.
|
|
313
306
|
Accessing them under `client.conversational_ai` raises `NotImplementedError`.
|
|
314
307
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Compatibility and server support
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This guide covers Avartha Python SDK 0.0.7 or later. Avartha supports the
|
|
4
|
+
OpenAI Python 3.13.0 Realtime text interface and the
|
|
4
5
|
ElevenLabs Python 2.68.0 realtime speech and discovery interfaces. Neither
|
|
5
6
|
vendor SDK needs to be installed. Import clients, types, and exceptions from
|
|
6
7
|
Avartha; see the [migration guide](migration.md).
|
|
@@ -9,27 +10,29 @@ Avartha; see the [migration guide](migration.md).
|
|
|
9
10
|
|
|
10
11
|
SDK support and server availability are separate. Select a model available to
|
|
11
12
|
your workspace on serverless inference, and use only the features that model supports.
|
|
12
|
-
|
|
13
|
-
use HTTP.
|
|
13
|
+
These SDK model clients provide inference over WebSockets. Discovery and platform
|
|
14
|
+
management use HTTP. The platform also has enabled HTTP inference routes that
|
|
15
|
+
this SDK does not wrap: OpenAI speech/batch and Decisions, plus Chat Completions
|
|
16
|
+
for authorized OpenRouter-provider workspaces. Those routes do not imply that
|
|
17
|
+
ordinary workspace keys can use HTTP LLM inference.
|
|
14
18
|
|
|
15
19
|
| Surface | SDK support | Server prerequisites |
|
|
16
20
|
| --- | --- | --- |
|
|
17
21
|
| OpenAI Realtime text | Sync/async `realtime.connect()` | A model supporting `openai_realtime` and the requested session options |
|
|
18
22
|
| OpenAI model discovery | Sync/async `models.list()` and `models.retrieve(model)` | A valid Avartha key; results depend on workspace |
|
|
19
23
|
| OpenAI Realtime audio, transcription, images, and beta API | Unavailable | Use speech clients for supported audio workflows |
|
|
20
|
-
| Chat Completions, Responses, SSE, and OpenAI HTTP speech |
|
|
24
|
+
| Chat Completions, Responses, SSE, and OpenAI HTTP speech | No SDK wrappers | Enabled platform HTTP routes have separate prerequisites; use Realtime for this SDK’s model clients |
|
|
21
25
|
| Speech models and voices | Typed sync/async HTTP discovery | A visible speech model; voice discovery requires a routable TTS model |
|
|
22
26
|
| ASR languages | Sync/async `speech_to_text.languages.list(model_id=...)` | A routable ASR model; language hints depend on the model |
|
|
23
27
|
| Single-context TTS | Sync/async `convert_realtime` | A TTS model and voice; the runtime converts to the selected PCM, MP3 or G.711 format |
|
|
24
28
|
| Multi-context TTS | Sync/async `connect_multi_context` | A model supporting multiple contexts; each utterance needs a new context ID. Character timestamps need a timestamp-capable model |
|
|
25
29
|
| Realtime ASR | Async connections on both speech clients | An ASR model supporting the supplied audio format and sample rate |
|
|
26
|
-
| HTTP TTS and file transcription |
|
|
30
|
+
| HTTP TTS and file transcription | No SDK wrappers | Use these SDK realtime speech methods, or an explicitly enabled platform HTTP route |
|
|
27
31
|
| Live conversations and their history | Sync/async `Conversation`, `AsyncConversation`, and `conversational_ai.conversations` | A published agent and an API key for its workspace; see [voice conversations](voice-conversations.md) |
|
|
28
|
-
| Placing phone calls | Sync/async `conversational_ai.twilio.outbound_call` | Outbound calling enabled, a key with `voice_calls_place`, a Twilio number, and a published agent; see [placing a phone call](voice-conversations.md#placing-a-phone-call) |
|
|
29
32
|
| ElevenLabs-schema agents, tools, knowledge bases | Not implemented | Accessing them under `conversational_ai` raises `NotImplementedError` |
|
|
30
|
-
| Avartha voice agents: create, read, edit, publish, restore, delete | Sync/async `Control.voice_agents` | An API key with voice-agent management access to that workspace;
|
|
33
|
+
| Avartha voice agents: create, read, edit, publish, restore, delete | Sync/async `Control.voice_agents` | An API key with voice-agent management access to that workspace; capacity to publish |
|
|
31
34
|
| Catalog, workspaces, members, and invitations | Sync/async `Control` | An Avartha API key with the required workspace role and allocation |
|
|
32
|
-
| API-key administration |
|
|
35
|
+
| API-key administration | No convenience resource; verified routes can use `Control.request` | A workspace-bound key with `keys` access and a creator who is still an Owner or Admin, or a console session |
|
|
33
36
|
|
|
34
37
|
See [platform management](platform.md) for workspace roles, invitation
|
|
35
38
|
requirements, voice agents, and permissions.
|
|
@@ -53,6 +56,13 @@ serialization methods. The server must implement each requested feature.
|
|
|
53
56
|
Inspect `response.done.response.status` to distinguish successful completion
|
|
54
57
|
from failure, cancellation, or an incomplete response.
|
|
55
58
|
|
|
59
|
+
A new connection can rebuild a saved conversation on a compatible model.
|
|
60
|
+
Before its first `response.create`, append the saved items in order: assistant
|
|
61
|
+
messages with `role: "assistant"` and `output_text` content, and each tool call
|
|
62
|
+
as a `function_call` item (`call_id`, `name`, and JSON-object `arguments`)
|
|
63
|
+
followed by its `function_call_output`. Wait for each item's acknowledgement
|
|
64
|
+
before requesting a reply. This rebuilds the input history, not the old session.
|
|
65
|
+
|
|
56
66
|
### Sampling controls
|
|
57
67
|
|
|
58
68
|
Avartha adds sampling controls to `session.update` and `response.create`:
|
|
@@ -88,6 +98,32 @@ or queued, including through `send_raw()`:
|
|
|
88
98
|
Active penalties also require deployment support; otherwise the server refuses
|
|
89
99
|
them with an `error` event. Speech-to-text connections have no temperature setting.
|
|
90
100
|
|
|
101
|
+
### Native options beyond the typed schema
|
|
102
|
+
|
|
103
|
+
The SDK's public types cover its supported subset of the OpenAI schema and the
|
|
104
|
+
sampling controls above. Some Avartha Realtime extensions, including
|
|
105
|
+
`include_reasoning` and `reasoning.thinking_enabled`, are not yet declared in
|
|
106
|
+
those types. A supported runtime can receive them as explicit JSON:
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
import json
|
|
110
|
+
|
|
111
|
+
await connection.send_raw(
|
|
112
|
+
json.dumps(
|
|
113
|
+
{
|
|
114
|
+
"type": "session.update",
|
|
115
|
+
"session": {"type": "realtime", "include_reasoning": True},
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
This opts into reasoning output without changing the model's reasoning effort.
|
|
122
|
+
The synchronous connection uses the same call without `await`. Raw frames still
|
|
123
|
+
pass the SDK's text-only and sampling checks, and the server validates all
|
|
124
|
+
remaining fields. A field's absence from the Python type does not establish
|
|
125
|
+
server support; check the selected model and platform protocol documentation.
|
|
126
|
+
|
|
91
127
|
### Unsupported operations
|
|
92
128
|
|
|
93
129
|
Explicit audio/transcription/image requests raise `UnsupportedOperationError`
|
|
@@ -242,6 +278,22 @@ Out-of-range `inactivity_timeout` values, a non-boolean `sync_alignment`, and
|
|
|
242
278
|
`sync_alignment=True` with MP3 raise `ValueError` before connecting. For
|
|
243
279
|
`convert_realtime`, that happens when iteration starts.
|
|
244
280
|
|
|
281
|
+
### Voice settings, warnings, and other query parameters
|
|
282
|
+
|
|
283
|
+
ElevenLabs' `stability`, `similarity_boost`, and `style` (finite numbers from 0
|
|
284
|
+
to 1) and `use_speaker_boost` (a boolean) are accepted in `voice_settings` for
|
|
285
|
+
compatibility, but they do not change synthesis. `speed` must be omitted or 1.0.
|
|
286
|
+
Other names, types, and ranges are refused. When accepted settings have no
|
|
287
|
+
effect, the runtime sends a `warning` once per connection. The SDK logs it on
|
|
288
|
+
the `avartha._realtime_tts` logger at `WARNING` level and keeps streaming: a
|
|
289
|
+
warning never raises or settles a context.
|
|
290
|
+
|
|
291
|
+
Pass other documented stream parameters, such as `language_code`, in
|
|
292
|
+
`request_options={"additional_query_parameters": {...}}`. Values there override
|
|
293
|
+
the SDK's own query values, and `None` omits one. Some models cannot detect the
|
|
294
|
+
language of streamed text, so they refuse it unless `language_code` is set;
|
|
295
|
+
send `"en"` for English text.
|
|
296
|
+
|
|
245
297
|
Use `contextlib.closing(audio)` for the sync iterator or
|
|
246
298
|
`contextlib.aclosing(audio)` for the async iterator when playback may stop early.
|
|
247
299
|
Closing the iterator closes the socket and waits for its sender to stop. Started
|
|
@@ -343,8 +395,11 @@ the server. Runnable examples:
|
|
|
343
395
|
## Realtime ASR
|
|
344
396
|
|
|
345
397
|
Audio-chunk mode sends samples unchanged. Supply matching `audio_format` and
|
|
346
|
-
`sample_rate`; mismatches raise `ValueError` before opening a socket.
|
|
347
|
-
|
|
398
|
+
`sample_rate`; mismatches raise `ValueError` before opening a socket. Every
|
|
399
|
+
`AudioFormat` value is accepted: mono PCM16 at 8, 16, 22.05, 24, 44.1, or 48 kHz,
|
|
400
|
+
and 8 kHz mu-law (`ULAW_8000`). The server resamples them for recognition. Send
|
|
401
|
+
raw samples without a file header; a chunk can hold at most 320,000 decoded bytes
|
|
402
|
+
and 160,000 samples, and must end on a sample boundary. URL mode requires FFmpeg and converts
|
|
348
403
|
the source to 16 kHz mono PCM16. After a successful, nonempty source reaches EOF,
|
|
349
404
|
the SDK commits the final turn and keeps receiving transcript events until the
|
|
350
405
|
application closes the connection. FFmpeg failures emit `RealtimeEvents.ERROR`.
|
|
@@ -454,4 +509,6 @@ committed transcript remains usable. See the
|
|
|
454
509
|
fence. Pass `organization` or `project` explicitly to set them.
|
|
455
510
|
- The ASR token option is preserved, including suppression of the API-key header
|
|
456
511
|
when a token is supplied. Token issuance is a separate server prerequisite.
|
|
457
|
-
|
|
512
|
+
Published-agent signed URLs are available through
|
|
513
|
+
`conversational_ai.conversations.get_signed_url` and
|
|
514
|
+
`Conversation(requires_auth=True)`; see [voice conversations](voice-conversations.md).
|
|
@@ -7,16 +7,17 @@ URLs, and model/voice IDs. Keep the supported realtime calls and event loops.
|
|
|
7
7
|
The supported interfaces match OpenAI Python 3.13.0 and ElevenLabs Python 2.68.0.
|
|
8
8
|
Neither vendor SDK needs to be installed to use Avartha.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
This guide uses SDK 0.0.7 or later. Its model clients provide WebSocket
|
|
11
|
+
inference and HTTP discovery. HTTP inference wrappers are outside this SDK
|
|
12
|
+
subset; enabled platform HTTP endpoints have separate prerequisites. See
|
|
13
|
+
[SDK support and server prerequisites](compatibility.md).
|
|
13
14
|
|
|
14
15
|
## From OpenAI Realtime
|
|
15
16
|
|
|
16
17
|
Install the package:
|
|
17
18
|
|
|
18
19
|
```sh
|
|
19
|
-
python -m pip install avartha-python-sdk
|
|
20
|
+
python -m pip install --upgrade 'avartha-python-sdk>=0.0.7'
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
Then change the client import:
|
|
@@ -105,8 +106,9 @@ application uses it.
|
|
|
105
106
|
|
|
106
107
|
### Existing HTTP inference applications
|
|
107
108
|
|
|
108
|
-
Applications
|
|
109
|
-
|
|
109
|
+
Applications moving HTTP inference code to these SDK model clients use the
|
|
110
|
+
corresponding Realtime protocol. A direct platform HTTP integration uses its
|
|
111
|
+
own documented endpoint and model prerequisites. Calls to OpenAI-compatible
|
|
110
112
|
HTTP inference resources raise `avartha.UnsupportedOperationError` before any
|
|
111
113
|
request is sent, including when a custom service URL is supplied.
|
|
112
114
|
|
|
@@ -165,13 +167,12 @@ use `avartha.ApiError`. WebSocket exceptions retain the `websockets` classes.
|
|
|
165
167
|
| ASR languages | `speech_to_text.languages.list(model_id=...)` | Typed sync/async Avartha extension |
|
|
166
168
|
| HTTP TTS, file ASR | `text_to_speech.convert`, `text_to_speech.stream`, `speech_to_text.convert` | Unavailable in this SDK |
|
|
167
169
|
| Conversation sessions and history | `conversational_ai.conversation`, `conversational_ai.conversations` | A documented subset; see [voice conversations](voice-conversations.md) |
|
|
168
|
-
| Placing phone calls | `conversational_ai.twilio.outbound_call` | A documented subset; see [placing a phone call](voice-conversations.md#placing-a-phone-call) |
|
|
169
|
-
| Registering Twilio calls | `conversational_ai.twilio.register_call` | Unavailable in this SDK |
|
|
170
170
|
| Agents, tools, knowledge bases | `conversational_ai` | Not implemented |
|
|
171
|
+
| Twilio phone calls | `conversational_ai.twilio` | Unavailable in this SDK |
|
|
171
172
|
|
|
172
173
|
Replace `avartha.legacy.ElevenLabs` and `avartha.legacy.AsyncElevenLabs` imports
|
|
173
174
|
with `avartha.ElevenLabs` and `avartha.AsyncElevenLabs`.
|
|
174
|
-
Accessing agents, tools,
|
|
175
|
+
Accessing agents, tools, knowledge bases, or `twilio` under `conversational_ai` raises
|
|
175
176
|
`NotImplementedError`; Avartha's own voice agents use a different schema and are managed
|
|
176
177
|
with [`Control.voice_agents`](platform.md#voice-agents). Conversations use
|
|
177
178
|
`avartha.conversational_ai`; call `wait_for_session_start()` before sending, and pass
|
|
@@ -264,11 +265,12 @@ transcripts. Handlers can be ordinary functions or async functions.
|
|
|
264
265
|
ASR events retain their names and raw dictionary payloads, including the
|
|
265
266
|
deprecated `UNACCEPTED_TERMS_ERROR` callback alias.
|
|
266
267
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
268
|
+
ASR accepts raw mono samples without a file header: PCM16 at 8, 16, 22.05, 24,
|
|
269
|
+
44.1, or 48 kHz, or 8 kHz mu-law. Select the matching `AudioFormat` and
|
|
270
|
+
`sample_rate`, such as `AudioFormat.PCM_24000` with `sample_rate=24000`; the
|
|
271
|
+
server resamples them for recognition. The SDK sends chunks unchanged and does
|
|
272
|
+
not convert their encoding. URL mode uses FFmpeg to convert the source to 16 kHz
|
|
273
|
+
PCM16 and requires FFmpeg on `PATH`.
|
|
272
274
|
|
|
273
275
|
Nonempty `previous_text` is unsupported by current ASR models. The SDK
|
|
274
276
|
preserves this protocol field, but the server rejects nonempty values rather
|
|
@@ -448,9 +450,10 @@ Speech discovery retries transient HTTP statuses twice by default; use
|
|
|
448
450
|
`request_options={"max_retries": 0}` to disable retries. Redirects must stay on
|
|
449
451
|
the configured origin. Platform management writes are never retried automatically.
|
|
450
452
|
|
|
451
|
-
HTTP timeout and retry settings do not configure WebSockets.
|
|
452
|
-
`
|
|
453
|
-
|
|
454
|
-
|
|
453
|
+
HTTP timeout and retry settings do not configure WebSockets. Realtime
|
|
454
|
+
reconnection is opt-in through `on_reconnecting`; `max_retries=0` disables
|
|
455
|
+
retries even with a callback. Each reconnect starts a fresh session, so the
|
|
456
|
+
application must restore configuration and conversation history. Use
|
|
457
|
+
`websocket_connection_options` for connection settings. Use `asyncio.timeout` when an async operation needs an
|
|
455
458
|
overall deadline. Close active WebSocket sessions separately, including when
|
|
456
459
|
cancelling or stopping playback early.
|
|
@@ -14,8 +14,11 @@ with Avartha() as client:
|
|
|
14
14
|
print(models, sizes, organizations)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
These examples use SDK 0.0.7 or later.
|
|
18
|
+
|
|
17
19
|
`organizations.limits(workspace_id)` returns quota policy, current usage, and
|
|
18
|
-
any pending quota increase request.
|
|
20
|
+
any pending quota increase request. A null `entitlement_policy` means the
|
|
21
|
+
workspace uses platform defaults, not that it is unlimited. Management responses are JSON dictionaries
|
|
19
22
|
and lists, preserving the server's fields.
|
|
20
23
|
|
|
21
24
|
## Workspace administration
|
|
@@ -27,7 +30,7 @@ The platform calls workspaces `organizations`. Use the same ID returned by
|
|
|
27
30
|
from avartha import Control
|
|
28
31
|
|
|
29
32
|
with Control() as client:
|
|
30
|
-
workspace = client.organizations.
|
|
33
|
+
workspace = client.organizations.list()[0] # The API key's bound workspace.
|
|
31
34
|
workspace_id = str(workspace["id"])
|
|
32
35
|
client.organizations.update(workspace_id, name="Research team")
|
|
33
36
|
members = client.organizations.members.list(workspace_id)
|
|
@@ -38,7 +41,7 @@ with Control() as client:
|
|
|
38
41
|
| --- | --- |
|
|
39
42
|
| `control.organizations` | `list()`, `get(id)`, `create(name=...)`, `update(id, name=...)`, `delete(id)`, `leave(id)`, `limits(id)` |
|
|
40
43
|
| `control.organizations.members` | `list(id)`, `update(id, user_id, role=...)`, `remove(id, user_id)` |
|
|
41
|
-
| `control.organizations.invitations` | `list(id)`, `create(id, role=..., email
|
|
44
|
+
| `control.organizations.invitations` | `list(id)`, `create(id, role=..., email=...)`, `revoke(id, invitation_id)` |
|
|
42
45
|
| `control.invitations` | `preview(token)`, `accept(token=...)` |
|
|
43
46
|
|
|
44
47
|
Here, `id` is the organization ID. Roles are `"owner"`, `"admin"`, and
|
|
@@ -49,9 +52,9 @@ return `None`. Revoking an invitation returns its updated JSON object.
|
|
|
49
52
|
Create an invitation link with
|
|
50
53
|
`client.organizations.invitations.create(workspace_id, role="member")`.
|
|
51
54
|
The response includes `accept_url`. Supplying `email` also asks the platform to
|
|
52
|
-
send an invitation email.
|
|
53
|
-
`entitlement_policy`
|
|
54
|
-
|
|
55
|
+
send an invitation email. The supported request fields are `role` and `email`.
|
|
56
|
+
The SDK retains an `entitlement_policy` parameter, but the platform ignores it;
|
|
57
|
+
it does not set a recipient credit budget or rate limit. Omitted or `None` optional arguments are
|
|
55
58
|
left out of the request. Inspect `delivery_warning`: creation can succeed even
|
|
56
59
|
if email delivery fails.
|
|
57
60
|
|
|
@@ -79,21 +82,25 @@ asyncio.run(main())
|
|
|
79
82
|
|
|
80
83
|
### Server prerequisites
|
|
81
84
|
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
inference
|
|
85
|
+
- A key acts only in the workspace it is bound to. Workspace administration
|
|
86
|
+
also needs the **Workspace** management access (`workspace`) and the required
|
|
87
|
+
role. A default inference key does not have that access. Listing workspaces
|
|
88
|
+
returns only the key's bound workspace.
|
|
89
|
+
- `organizations.create()` needs `workspace` access. The returned workspace is
|
|
90
|
+
new; the key remains bound to the original workspace. Create a key for the new
|
|
91
|
+
workspace in the console before managing it with another client.
|
|
85
92
|
- Owners and admins can rename workspaces and manage members/invitations.
|
|
86
93
|
Only owners can delete a workspace or change owner access. Admins cannot
|
|
87
94
|
change or remove other admins. The server refuses removing or demoting the
|
|
88
95
|
last owner, including through `leave`, with a conflict.
|
|
89
96
|
- New customer workspaces start with a serverless-only, zero-budget allocation.
|
|
90
97
|
Creation alone does not provide inference credits.
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
- Email delivery requires server email configuration. Inspect any
|
|
99
|
+
`delivery_warning` even after an invitation is created.
|
|
100
|
+
- API-key administration has no convenience resource in `Control`. Its verified
|
|
101
|
+
`auth/api-keys` routes accept a key with **Keys** management access (`keys`),
|
|
102
|
+
bound to the workspace, whose creator is still an Owner or Admin. The console
|
|
103
|
+
also provides these operations. Existing key secrets cannot be retrieved.
|
|
97
104
|
|
|
98
105
|
## Voice agents
|
|
99
106
|
|
|
@@ -154,7 +161,6 @@ with Control() as client:
|
|
|
154
161
|
| `create(workspace_id, name=..., template_id=..., config=..., description=..., use_case=..., color=...)` | The new draft |
|
|
155
162
|
| `update(workspace_id, agent_id, expected_generation=..., name=..., description=..., template_id=..., use_case=..., config=..., color=...)` | The saved draft |
|
|
156
163
|
| `publish(workspace_id, agent_id, expected_agent_generation=..., expected_publication_generation=...)` | `action`, `publication_generation`, and `publication` |
|
|
157
|
-
|
|
158
164
|
| `delete(workspace_id, agent_id, expected_generation=...)` | Nothing; the agent is gone |
|
|
159
165
|
| `publications.list(workspace_id, agent_id, before=..., limit=...)` | `publications`, newest first, and `next_before` |
|
|
160
166
|
| `publications.get(workspace_id, agent_id, publication_id)` | One revision with its name and `config` |
|
|
@@ -241,7 +247,6 @@ client.voice_agents.publish(
|
|
|
241
247
|
| 409, `body["code"] == "voice_agent_capacity_exceeded"` | The workspace is at its published-agent limit | See the prerequisites below |
|
|
242
248
|
| 429, `body["code"] == "rate_limit_exceeded"` | Too many management requests for this user or workspace | Wait `retry_after` seconds, then retry |
|
|
243
249
|
| 403 | The key lacks the access below | Check its scope, workspace, and creator's role |
|
|
244
|
-
| 404 `Voice agents aren't available for this workspace` | The feature is off for the workspace | Ask Avartha to enable it |
|
|
245
250
|
| 422 with a text `body` | A required key is missing or a value has the wrong type | Correct the request as `body` describes |
|
|
246
251
|
| 503 `No voice environment serves this caller...` | The platform has no voice environment for this caller, so drafts can't be saved | Contact Avartha |
|
|
247
252
|
|
|
@@ -249,9 +254,9 @@ client.voice_agents.publish(
|
|
|
249
254
|
before trying again, because the draft may have been saved.
|
|
250
255
|
|
|
251
256
|
Unpublishing, test calls, changing data retention, and creating or revoking
|
|
252
|
-
credentials aren't available to API keys, so use the console for them. Tools
|
|
253
|
-
|
|
254
|
-
|
|
257
|
+
voice-provider credentials aren't available to API keys, so use the console for them. Tools can be
|
|
258
|
+
referenced in `config` once they exist in the workspace, but are managed elsewhere.
|
|
259
|
+
Publishing makes an agent available,
|
|
255
260
|
and the workspace's voice-call policy still decides whether calls are admitted. To talk
|
|
256
261
|
to a published agent, see [voice conversations](voice-conversations.md).
|
|
257
262
|
|
|
@@ -265,8 +270,8 @@ to a published agent, see [voice conversations](voice-conversations.md).
|
|
|
265
270
|
name and configuration. It gets HTTP 403 for every write, for revision history, and
|
|
266
271
|
for credentials. `runtime_defaults()` and `data_retention()` need only workspace
|
|
267
272
|
membership.
|
|
268
|
-
-
|
|
269
|
-
|
|
273
|
+
- Voice agents are available to every workspace; saving drafts needs no other
|
|
274
|
+
allowance.
|
|
270
275
|
- Publishing a new agent needs capacity: `organizations.limits(id)` reports
|
|
271
276
|
`max_voice_agents` under `limits`, and new workspaces start at zero.
|
|
272
277
|
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Synchronous and asynchronous Python clients for Avartha Realtime text,
|
|
4
4
|
streaming speech, and platform management. Requires Python 3.12+.
|
|
5
|
+
The guides and examples below use SDK 0.0.7 or later.
|
|
5
6
|
|
|
6
7
|
## Install
|
|
7
8
|
|
|
8
9
|
```sh
|
|
9
|
-
python -m pip install avartha-python-sdk
|
|
10
|
+
python -m pip install --upgrade 'avartha-python-sdk>=0.0.7'
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
Configure your Avartha API key and platform root:
|
|
@@ -24,15 +25,18 @@ to your workspace. Unsupported tier values and dedicated inference URLs raise
|
|
|
24
25
|
## Discover models
|
|
25
26
|
|
|
26
27
|
```python
|
|
27
|
-
from avartha import
|
|
28
|
+
from avartha import Avartha
|
|
28
29
|
|
|
29
|
-
with
|
|
30
|
+
with Avartha() as client:
|
|
30
31
|
for model in client.models.list():
|
|
31
32
|
print(model.id, model.to_dict().get("protocols", []))
|
|
33
|
+
for model in client.elevenlabs.models.list():
|
|
34
|
+
print(model.model_id, getattr(model, "protocols", []))
|
|
32
35
|
```
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
speech
|
|
37
|
+
`client.models` lists Voice LLMs; choose `openai_realtime` for text.
|
|
38
|
+
`client.elevenlabs.models` lists speech models; choose `elevenlabs_tts` for
|
|
39
|
+
speech synthesis or `elevenlabs_asr` for speech recognition.
|
|
36
40
|
|
|
37
41
|
## Generate text
|
|
38
42
|
|
|
@@ -80,11 +84,10 @@ Inference consumes credits.
|
|
|
80
84
|
| Workspaces, members, invitations | `Control` / `AsyncControl` |
|
|
81
85
|
| Voice agents: create, edit, publish, restore, delete | `Control` / `AsyncControl`: `voice_agents` |
|
|
82
86
|
| Live conversations with published agents | `avartha.conversational_ai`: `Conversation`, `AsyncConversation` |
|
|
83
|
-
| Placing phone calls from Twilio numbers | `ElevenLabs` / `AsyncElevenLabs`: `conversational_ai.twilio.outbound_call` |
|
|
84
87
|
| Combined inference and management | `Avartha` / `AsyncAvartha` |
|
|
85
88
|
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
This SDK provides model inference over WebSockets; it does not wrap HTTP
|
|
90
|
+
Chat Completions, Responses, speech synthesis, or file transcription. ElevenLabs-schema agent management is not
|
|
88
91
|
implemented, and accessing it under `conversational_ai` raises `NotImplementedError`.
|
|
89
92
|
|
|
90
93
|
## Migrating and handling errors
|
|
@@ -109,4 +112,4 @@ never retried automatically.
|
|
|
109
112
|
The [source archive on PyPI](https://pypi.org/project/avartha-python-sdk/#files)
|
|
110
113
|
includes `README.md`, customer guides in `docs/`, and runnable examples in
|
|
111
114
|
`examples/`. Download and unpack the archive to read the migration, compatibility,
|
|
112
|
-
and platform-management guides and run the text, speech, and
|
|
115
|
+
and platform-management guides and run the text, speech, and voice-agent examples.
|