solana-agent 22.0.1__tar.gz → 22.0.2__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.
- {solana_agent-22.0.1 → solana_agent-22.0.2}/PKG-INFO +10 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/README.md +9 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/pyproject.toml +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/adapters/llm_adapter.py +14 -16
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/client/solana_agent.py +2 -2
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/client/client.py +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/providers/llm.py +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/services/agent.py +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/services/query.py +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/services/agent.py +1 -1
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/services/query.py +4 -3
- {solana_agent-22.0.1 → solana_agent-22.0.2}/LICENSE +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/adapters/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/adapters/mongodb_adapter.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/client/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/domains/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/domains/agent.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/domains/routing.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/factories/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/factories/agent_factory.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/plugins/plugins.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/providers/data_storage.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/providers/memory.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/services/routing.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/plugins/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/plugins/manager.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/plugins/registry.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/plugins/tools/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/plugins/tools/auto_tool.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/repositories/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/repositories/memory.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/services/__init__.py +0 -0
- {solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/services/routing.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: solana-agent
|
3
|
-
Version: 22.0.
|
3
|
+
Version: 22.0.2
|
4
4
|
Summary: Agentic IQ
|
5
5
|
License: MIT
|
6
6
|
Keywords: ai,openai,ai agents,agi
|
@@ -249,6 +249,15 @@ async for response in solana_agent.process("user123", "Write me a poem.", intern
|
|
249
249
|
print(response, end="")
|
250
250
|
```
|
251
251
|
|
252
|
+
### Customize Audio Voice
|
253
|
+
|
254
|
+
This is an audio to audio example using the `audio_instructions` parameter.
|
255
|
+
|
256
|
+
```python
|
257
|
+
async for response in solana_agent.process("user123", audio_content, output_format="audio", audio_voice="nova", audio_input_format="webm", audio_output_format="aac", audio_instructions="You speak with an American southern accent"):
|
258
|
+
print(response, end="")
|
259
|
+
```
|
260
|
+
|
252
261
|
## Tools
|
253
262
|
|
254
263
|
Tools can be used from plugins like Solana Agent Kit (sakit) or via custom inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
@@ -225,6 +225,15 @@ async for response in solana_agent.process("user123", "Write me a poem.", intern
|
|
225
225
|
print(response, end="")
|
226
226
|
```
|
227
227
|
|
228
|
+
### Customize Audio Voice
|
229
|
+
|
230
|
+
This is an audio to audio example using the `audio_instructions` parameter.
|
231
|
+
|
232
|
+
```python
|
233
|
+
async for response in solana_agent.process("user123", audio_content, output_format="audio", audio_voice="nova", audio_input_format="webm", audio_output_format="aac", audio_instructions="You speak with an American southern accent"):
|
234
|
+
print(response, end="")
|
235
|
+
```
|
236
|
+
|
228
237
|
## Tools
|
229
238
|
|
230
239
|
Tools can be used from plugins like Solana Agent Kit (sakit) or via custom inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
@@ -22,12 +22,12 @@ class OpenAIAdapter(LLMProvider):
|
|
22
22
|
self.text_model = "gpt-4o-mini"
|
23
23
|
self.internet_search_model = "gpt-4o-mini-search-preview"
|
24
24
|
self.transcription_model = "gpt-4o-mini-transcribe"
|
25
|
-
self.tts_model = "tts
|
25
|
+
self.tts_model = "gpt-4o-mini-tts"
|
26
26
|
|
27
27
|
async def tts(
|
28
28
|
self,
|
29
29
|
text: str,
|
30
|
-
instructions: str = "",
|
30
|
+
instructions: str = "You speak in a friendly and helpful manner.",
|
31
31
|
voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
32
32
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
33
33
|
response_format: Literal['mp3', 'opus',
|
@@ -45,16 +45,16 @@ class OpenAIAdapter(LLMProvider):
|
|
45
45
|
Audio bytes as they become available
|
46
46
|
"""
|
47
47
|
try:
|
48
|
-
|
48
|
+
with self.client.audio.speech.with_streaming_response.create(
|
49
49
|
model=self.tts_model,
|
50
50
|
voice=voice,
|
51
|
+
instructions=instructions,
|
51
52
|
input=text,
|
52
53
|
response_format=response_format
|
53
|
-
)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
yield chunk
|
54
|
+
) as stream:
|
55
|
+
# Stream the bytes in 16KB chunks
|
56
|
+
for chunk in stream.iter_bytes(chunk_size=1024 * 16):
|
57
|
+
yield chunk
|
58
58
|
|
59
59
|
except Exception as e:
|
60
60
|
print(f"Error in text_to_speech: {str(e)}")
|
@@ -66,7 +66,7 @@ class OpenAIAdapter(LLMProvider):
|
|
66
66
|
print(f"Error in text_to_speech: {str(e)}")
|
67
67
|
import traceback
|
68
68
|
print(traceback.format_exc())
|
69
|
-
yield
|
69
|
+
yield b"" # Return empty bytes on error
|
70
70
|
|
71
71
|
async def transcribe_audio(
|
72
72
|
self,
|
@@ -85,16 +85,14 @@ class OpenAIAdapter(LLMProvider):
|
|
85
85
|
Transcript text chunks as they become available
|
86
86
|
"""
|
87
87
|
try:
|
88
|
-
|
88
|
+
with self.client.audio.transcriptions.with_streaming_response.create(
|
89
89
|
model=self.transcription_model,
|
90
90
|
file=(f"file.{input_format}", audio_bytes),
|
91
91
|
response_format="text",
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
if hasattr(event, 'text') and event.text:
|
97
|
-
yield event.text
|
92
|
+
) as stream:
|
93
|
+
# Stream the text in 16KB chunks
|
94
|
+
for chunk in stream.iter_text(chunk_size=1024 * 16):
|
95
|
+
yield chunk
|
98
96
|
|
99
97
|
except Exception as e:
|
100
98
|
print(f"Error in transcribe_audio: {str(e)}")
|
@@ -49,7 +49,7 @@ class SolanaAgent(SolanaAgentInterface):
|
|
49
49
|
output_format: Literal["text", "audio"] = "text",
|
50
50
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
51
51
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
52
|
-
audio_instructions:
|
52
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
53
53
|
audio_output_format: Literal['mp3', 'opus',
|
54
54
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
55
55
|
audio_input_format: Literal[
|
@@ -66,7 +66,7 @@ class SolanaAgent(SolanaAgentInterface):
|
|
66
66
|
prompt: Optional prompt for the agent
|
67
67
|
output_format: Response format ("text" or "audio")
|
68
68
|
audio_voice: Voice to use for audio output
|
69
|
-
audio_instructions:
|
69
|
+
audio_instructions: Audio voice instructions
|
70
70
|
audio_output_format: Audio output format
|
71
71
|
audio_input_format: Audio input format
|
72
72
|
router: Optional routing service for processing
|
@@ -17,7 +17,7 @@ class SolanaAgent(ABC):
|
|
17
17
|
output_format: Literal["text", "audio"] = "text",
|
18
18
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
19
19
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
20
|
-
audio_instructions:
|
20
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
21
21
|
audio_output_format: Literal['mp3', 'opus',
|
22
22
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
23
23
|
audio_input_format: Literal[
|
@@ -31,7 +31,7 @@ class LLMProvider(ABC):
|
|
31
31
|
async def tts(
|
32
32
|
self,
|
33
33
|
text: str,
|
34
|
-
instructions: str = "",
|
34
|
+
instructions: str = "You speak in a friendly and helpful manner.",
|
35
35
|
voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
36
36
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
37
37
|
response_format: Literal['mp3', 'opus',
|
@@ -27,7 +27,7 @@ class AgentService(ABC):
|
|
27
27
|
output_format: Literal["text", "audio"] = "text",
|
28
28
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
29
29
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
30
|
-
audio_instructions:
|
30
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
31
31
|
audio_output_format: Literal['mp3', 'opus',
|
32
32
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
33
33
|
audio_input_format: Literal[
|
@@ -13,7 +13,7 @@ class QueryService(ABC):
|
|
13
13
|
output_format: Literal["text", "audio"] = "text",
|
14
14
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
15
15
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
16
|
-
audio_instructions:
|
16
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
17
17
|
audio_output_format: Literal['mp3', 'opus',
|
18
18
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
19
19
|
audio_input_format: Literal[
|
@@ -169,7 +169,7 @@ class AgentService(AgentServiceInterface):
|
|
169
169
|
output_format: Literal["text", "audio"] = "text",
|
170
170
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
171
171
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
172
|
-
audio_instructions:
|
172
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
173
173
|
audio_output_format: Literal['mp3', 'opus',
|
174
174
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
175
175
|
audio_input_format: Literal[
|
@@ -41,7 +41,7 @@ class QueryService(QueryServiceInterface):
|
|
41
41
|
output_format: Literal["text", "audio"] = "text",
|
42
42
|
audio_voice: Literal["alloy", "ash", "ballad", "coral", "echo",
|
43
43
|
"fable", "onyx", "nova", "sage", "shimmer"] = "nova",
|
44
|
-
audio_instructions:
|
44
|
+
audio_instructions: str = "You speak in a friendly and helpful manner.",
|
45
45
|
audio_output_format: Literal['mp3', 'opus',
|
46
46
|
'aac', 'flac', 'wav', 'pcm'] = "aac",
|
47
47
|
audio_input_format: Literal[
|
@@ -58,7 +58,7 @@ class QueryService(QueryServiceInterface):
|
|
58
58
|
query: Text query or audio bytes
|
59
59
|
output_format: Response format ("text" or "audio")
|
60
60
|
audio_voice: Voice for TTS (text-to-speech)
|
61
|
-
audio_instructions:
|
61
|
+
audio_instructions: Audio voice instructions
|
62
62
|
audio_output_format: Audio output format
|
63
63
|
audio_input_format: Audio input format
|
64
64
|
prompt: Optional prompt for the agent
|
@@ -84,7 +84,8 @@ class QueryService(QueryServiceInterface):
|
|
84
84
|
async for chunk in self.agent_service.llm_provider.tts(
|
85
85
|
text=response,
|
86
86
|
voice=audio_voice,
|
87
|
-
response_format=audio_output_format
|
87
|
+
response_format=audio_output_format,
|
88
|
+
instructions=audio_instructions,
|
88
89
|
):
|
89
90
|
yield chunk
|
90
91
|
else:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solana_agent-22.0.1 → solana_agent-22.0.2}/solana_agent/interfaces/providers/data_storage.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|