Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
107f035
feat(bidirectional_streaming): Add experimental bidirectional streami…
mehtarac Sep 25, 2025
9165a20
Updated doc strings, updated method from send_text() and send_audio()
mehtarac Sep 30, 2025
15df9f9
Updated minimum python runtime dependency
mehtarac Sep 30, 2025
3a0e7d5
fix imports
mehtarac Oct 2, 2025
f7e67ae
fix linting issues
mehtarac Oct 2, 2025
c654621
Remove typing module and rely on python's built-in types
mehtarac Oct 2, 2025
1f1abac
add typing to methods
mehtarac Oct 2, 2025
eb543b5
Improve comments and remove unused method _convert_to_strands_event
mehtarac Oct 2, 2025
5921f8b
Updated: fixed module imports baesd on the new smithy python release …
mehtarac Oct 2, 2025
8cb4d98
Removed unnecessary _output_queue check as the queue will always be i…
mehtarac Oct 2, 2025
7a6e53e
Remove redundant interruption checks
mehtarac Oct 2, 2025
a586261
Unified tool result and tool error methods, Added implementation to a…
mehtarac Oct 2, 2025
16d9b46
Modified logging to use python logger
mehtarac Oct 2, 2025
04265ba
Removed logging utility
mehtarac Oct 2, 2025
8a7396c
Updated types
mehtarac Oct 2, 2025
759eba5
Merge pull request #1 from mehtarac/strands_bidi
mehtarac Oct 6, 2025
909fc64
Merge pull request #2 from strands-agents/main
mehtarac Oct 6, 2025
3107e6b
(feat)bidirectional_streaming: add openai realtime model provider
mehtarac Oct 9, 2025
da8b86c
fix function calling
mehtarac Oct 10, 2025
9368c82
feat(tool_executor): Plug tool executor into bidirectional streaming …
mehtarac Oct 14, 2025
ee12db3
feat(tool_executor): Plug tool executor into bidirectional streaming …
mehtarac Oct 14, 2025
4679e0c
(feat)bidirectional_streaming: add openai realtime model provider #3
mehtarac Oct 20, 2025
9b20e12
Merge pull request #5 from mehtarac/tool_executor
mehtarac Oct 20, 2025
9cd3aca
Merge branch 'main' into realtime_mp
mehtarac Oct 20, 2025
6d81109
Merge branch 'strands-agents:main' into main
mehtarac Oct 29, 2025
ce97c1d
Merge pull request #3 from mehtarac/realtime_mp
mehtarac Oct 29, 2025
4648327
feat(gemini): Add bidirectional gemini model
Oct 29, 2025
f8abbaa
Merge pull request #14 from mkmeral/bidi-gemini
mehtarac Oct 29, 2025
0fc5110
feat: model interface change.
JackYPCOnline Oct 29, 2025
f0e3d65
fix: refine docstring
JackYPCOnline Oct 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,25 @@ sagemaker = [
"boto3-stubs[sagemaker-runtime]>=1.26.0,<2.0.0",
"openai>=1.68.0,<2.0.0", # SageMaker uses OpenAI-compatible interface
]
bidirectional-streaming-nova = [
"pyaudio>=0.2.13",
"rx>=3.2.0",
"smithy-aws-core>=0.0.1",
"pytz",
"aws_sdk_bedrock_runtime",
]
bidirectional-streaming-openai = [
"pyaudio>=0.2.13",
"websockets>=12.0,<14.0",
]
bidirectional-streaming = [
"pyaudio>=0.2.13",
"rx>=3.2.0",
"smithy-aws-core>=0.0.1",
"pytz",
"aws_sdk_bedrock_runtime",
"websockets>=12.0,<14.0",
]
otel = ["opentelemetry-exporter-otlp-proto-http>=1.30.0,<2.0.0"]
docs = [
"sphinx>=5.0.0,<9.0.0",
Expand All @@ -69,7 +88,7 @@ a2a = [
"fastapi>=0.115.12,<1.0.0",
"starlette>=0.46.2,<1.0.0",
]
all = ["strands-agents[a2a,anthropic,docs,gemini,litellm,llamaapi,mistral,ollama,openai,writer,sagemaker,otel]"]
all = ["strands-agents[a2a,anthropic,docs,gemini,bidirectional-streaming,docs,litellm,llamaapi,mistral,ollama,openai,writer,sagemaker,otel]"]

dev = [
"commitizen>=4.4.0,<5.0.0",
Expand Down
44 changes: 44 additions & 0 deletions src/strands/experimental/bidirectional_streaming/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""Bidirectional streaming package."""

# Main components - Primary user interface
from .agent.agent import BidirectionalAgent

# Advanced interfaces (for custom implementations)
from .models.base_model import BidirectionalModel, BidirectionalModelSession

# Model providers - What users need to create models
from .models.novasonic import NovaSonicBidirectionalModel
from .models.openai import OpenAIRealtimeBidirectionalModel

# Event types - For type hints and event handling
from .types.bidirectional_streaming import (
AudioInputEvent,
AudioOutputEvent,
BidirectionalStreamEvent,
InterruptionDetectedEvent,
TextOutputEvent,
UsageMetricsEvent,
VoiceActivityEvent,
)

__all__ = [
# Main interface
"BidirectionalAgent",

# Model providers
"NovaSonicBidirectionalModel",
"OpenAIRealtimeBidirectionalModel",

# Event types
"AudioInputEvent",
"AudioOutputEvent",
"TextOutputEvent",
"InterruptionDetectedEvent",
"BidirectionalStreamEvent",
"VoiceActivityEvent",
"UsageMetricsEvent",

# Model interface
"BidirectionalModel",
"BidirectionalModelSession",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"""Bidirectional agent for real-time streaming conversations."""

from .agent import BidirectionalAgent

__all__ = ["BidirectionalAgent"]
Loading
Loading