solana-agent 25.0.2__py3-none-any.whl → 27.0.0__py3-none-any.whl
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/adapters/llm_adapter.py +2 -3
- solana_agent/client/solana_agent.py +1 -1
- solana_agent/factories/agent_factory.py +11 -31
- solana_agent/repositories/memory.py +21 -8
- {solana_agent-25.0.2.dist-info → solana_agent-27.0.0.dist-info}/METADATA +14 -51
- {solana_agent-25.0.2.dist-info → solana_agent-27.0.0.dist-info}/RECORD +8 -8
- {solana_agent-25.0.2.dist-info → solana_agent-27.0.0.dist-info}/LICENSE +0 -0
- {solana_agent-25.0.2.dist-info → solana_agent-27.0.0.dist-info}/WHEEL +0 -0
@@ -23,7 +23,7 @@ class OpenAIAdapter(LLMProvider):
|
|
23
23
|
self.parse_model = "gpt-4o-mini"
|
24
24
|
self.text_model = "gpt-4o-mini"
|
25
25
|
self.transcription_model = "gpt-4o-mini-transcribe"
|
26
|
-
self.tts_model = "
|
26
|
+
self.tts_model = "tts-1"
|
27
27
|
|
28
28
|
async def tts(
|
29
29
|
self,
|
@@ -38,7 +38,7 @@ class OpenAIAdapter(LLMProvider):
|
|
38
38
|
|
39
39
|
Args:
|
40
40
|
text: Text to convert to speech
|
41
|
-
instructions:
|
41
|
+
instructions: Not used in this implementation
|
42
42
|
voice: Voice to use for synthesis
|
43
43
|
response_format: Audio format
|
44
44
|
|
@@ -49,7 +49,6 @@ class OpenAIAdapter(LLMProvider):
|
|
49
49
|
async with self.client.audio.speech.with_streaming_response.create(
|
50
50
|
model=self.tts_model,
|
51
51
|
voice=voice,
|
52
|
-
instructions=instructions,
|
53
52
|
input=text,
|
54
53
|
response_format=response_format
|
55
54
|
) as stream:
|
@@ -65,7 +65,7 @@ class SolanaAgent(SolanaAgentInterface):
|
|
65
65
|
prompt: Optional prompt for the agent
|
66
66
|
output_format: Response format ("text" or "audio")
|
67
67
|
audio_voice: Voice to use for audio output
|
68
|
-
audio_instructions:
|
68
|
+
audio_instructions: Not used in this version
|
69
69
|
audio_output_format: Audio output format
|
70
70
|
audio_input_format: Audio input format
|
71
71
|
router: Optional routing service for processing
|
@@ -86,38 +86,18 @@ class SolanaAgentFactory:
|
|
86
86
|
zep_api_key=config["zep"].get("api_key")
|
87
87
|
)
|
88
88
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
api_key=config["gemini"]["api_key"],
|
96
|
-
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
|
97
|
-
model="gemini-2.0-flash",
|
98
|
-
)
|
99
|
-
|
100
|
-
# Create routing service
|
101
|
-
routing_service = RoutingService(
|
102
|
-
llm_provider=llm_adapter,
|
103
|
-
agent_service=agent_service,
|
104
|
-
api_key=config["gemini"]["api_key"],
|
105
|
-
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
|
106
|
-
model="gemini-2.0-flash",
|
107
|
-
)
|
108
|
-
else:
|
109
|
-
# Create primary services
|
110
|
-
agent_service = AgentService(
|
111
|
-
llm_provider=llm_adapter,
|
112
|
-
business_mission=business_mission,
|
113
|
-
config=config,
|
114
|
-
)
|
89
|
+
# Create primary services
|
90
|
+
agent_service = AgentService(
|
91
|
+
llm_provider=llm_adapter,
|
92
|
+
business_mission=business_mission,
|
93
|
+
config=config,
|
94
|
+
)
|
115
95
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
96
|
+
# Create routing service
|
97
|
+
routing_service = RoutingService(
|
98
|
+
llm_provider=llm_adapter,
|
99
|
+
agent_service=agent_service,
|
100
|
+
)
|
121
101
|
|
122
102
|
# Debug the agent service tool registry
|
123
103
|
print(
|
@@ -121,17 +121,30 @@ class MemoryRepository(MemoryProvider):
|
|
121
121
|
|
122
122
|
async def retrieve(self, user_id: str) -> str:
|
123
123
|
"""Retrieve memory context from Zep only."""
|
124
|
-
if not self.zep:
|
125
|
-
return ""
|
126
|
-
|
127
124
|
try:
|
128
|
-
|
129
|
-
if
|
130
|
-
|
131
|
-
|
125
|
+
memories = ""
|
126
|
+
if self.zep:
|
127
|
+
memory = await self.zep.memory.get(session_id=user_id)
|
128
|
+
if memory and memory.context:
|
129
|
+
memories = memory.context
|
130
|
+
if self.mongo:
|
131
|
+
mongo_memory = self.mongo.find(
|
132
|
+
self.collection,
|
133
|
+
{"user_id": user_id},
|
134
|
+
sort=[("timestamp", -1)],
|
135
|
+
limit=3
|
136
|
+
)
|
137
|
+
if mongo_memory:
|
138
|
+
# Concatenate MongoDB memory with Zep memory
|
139
|
+
mongo_memory = [
|
140
|
+
f"{msg['user_message']} {msg['assistant_message']}"
|
141
|
+
for msg in mongo_memory
|
142
|
+
]
|
143
|
+
memories += " ".join(mongo_memory)
|
144
|
+
return memories
|
132
145
|
|
133
146
|
except Exception as e:
|
134
|
-
print(f"Error retrieving
|
147
|
+
print(f"Error retrieving memories: {e}")
|
135
148
|
return ""
|
136
149
|
|
137
150
|
async def delete(self, user_id: str) -> None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: solana-agent
|
3
|
-
Version:
|
3
|
+
Version: 27.0.0
|
4
4
|
Summary: Agentic IQ
|
5
5
|
License: MIT
|
6
6
|
Keywords: ai,openai,ai agents,agi
|
@@ -15,10 +15,10 @@ Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
17
17
|
Requires-Dist: instructor (>=1.7.9,<2.0.0)
|
18
|
-
Requires-Dist: openai (>=1.
|
19
|
-
Requires-Dist: pydantic (>=2.11.
|
20
|
-
Requires-Dist: pymongo (>=4.
|
21
|
-
Requires-Dist: zep-cloud (>=2.
|
18
|
+
Requires-Dist: openai (>=1.72.0,<2.0.0)
|
19
|
+
Requires-Dist: pydantic (>=2.11.3,<3.0.0)
|
20
|
+
Requires-Dist: pymongo (>=4.12.0,<5.0.0)
|
21
|
+
Requires-Dist: zep-cloud (>=2.10.0,<3.0.0)
|
22
22
|
Project-URL: Documentation, https://docs.solana-agent.com
|
23
23
|
Project-URL: Repository, https://github.com/truemagic-coder/solana-agent
|
24
24
|
Description-Content-Type: text/markdown
|
@@ -76,14 +76,14 @@ Build your AI business in three lines of code!
|
|
76
76
|
### Tech
|
77
77
|
|
78
78
|
* [Python](https://python.org) - Programming Language
|
79
|
-
* [OpenAI](https://openai.com)
|
79
|
+
* [OpenAI](https://openai.com) - LLM Provider
|
80
80
|
* [MongoDB](https://mongodb.com) - Conversational History (optional)
|
81
81
|
* [Zep Cloud](https://getzep.com) - Conversational Memory (optional)
|
82
82
|
|
83
83
|
### LLMs
|
84
84
|
|
85
|
-
* [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
|
86
|
-
* [
|
85
|
+
* [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
|
86
|
+
* [tts-1](https://platform.openai.com/docs/models/tts-1)
|
87
87
|
* [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe)
|
88
88
|
|
89
89
|
|
@@ -146,9 +146,6 @@ Keep this in mind while designing your agentic systems using Solana Agent.
|
|
146
146
|
from solana_agent import SolanaAgent
|
147
147
|
|
148
148
|
config = {
|
149
|
-
"gemini": {
|
150
|
-
"api_key": "your-gemini-api-key",
|
151
|
-
},
|
152
149
|
"openai": {
|
153
150
|
"api_key": "your-openai-api-key",
|
154
151
|
},
|
@@ -178,9 +175,6 @@ async for response in solana_agent.process("user123", "What are the latest AI de
|
|
178
175
|
from solana_agent import SolanaAgent
|
179
176
|
|
180
177
|
config = {
|
181
|
-
"gemini": {
|
182
|
-
"api_key": "your-gemini-api-key",
|
183
|
-
},
|
184
178
|
"openai": {
|
185
179
|
"api_key": "your-openai-api-key",
|
186
180
|
},
|
@@ -212,9 +206,6 @@ async for response in solana_agent.process("user123", audio_content, output_form
|
|
212
206
|
from solana_agent import SolanaAgent
|
213
207
|
|
214
208
|
config = {
|
215
|
-
"gemini": {
|
216
|
-
"api_key": "your-gemini-api-key",
|
217
|
-
},
|
218
209
|
"openai": {
|
219
210
|
"api_key": "your-openai-api-key",
|
220
211
|
},
|
@@ -244,9 +235,6 @@ async for response in solana_agent.process("user123", "What is the latest news o
|
|
244
235
|
from solana_agent import SolanaAgent
|
245
236
|
|
246
237
|
config = {
|
247
|
-
"gemini": {
|
248
|
-
"api_key": "your-gemini-api-key",
|
249
|
-
},
|
250
238
|
"openai": {
|
251
239
|
"api_key": "your-openai-api-key",
|
252
240
|
},
|
@@ -313,25 +301,6 @@ config = {
|
|
313
301
|
}
|
314
302
|
```
|
315
303
|
|
316
|
-
### Customize Speech
|
317
|
-
|
318
|
-
This is an audio to audio example using the `audio_instructions` parameter.
|
319
|
-
|
320
|
-
You can prompt to control aspects of speech, including:
|
321
|
-
|
322
|
-
* Accent
|
323
|
-
* Emotional range
|
324
|
-
* Intonation
|
325
|
-
* Impressions
|
326
|
-
* Speed of speech
|
327
|
-
* Tone
|
328
|
-
* Whispering
|
329
|
-
|
330
|
-
```python
|
331
|
-
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"):
|
332
|
-
print(response, end="")
|
333
|
-
```
|
334
|
-
|
335
304
|
## Tools
|
336
305
|
|
337
306
|
Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
@@ -349,9 +318,6 @@ Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools
|
|
349
318
|
from solana_agent import SolanaAgent
|
350
319
|
|
351
320
|
config = {
|
352
|
-
"gemini": {
|
353
|
-
"api_key": "your-gemini-api-key",
|
354
|
-
},
|
355
321
|
"openai": {
|
356
322
|
"api_key": "your-openai-api-key",
|
357
323
|
},
|
@@ -434,9 +400,6 @@ class TestTool(Tool):
|
|
434
400
|
}
|
435
401
|
|
436
402
|
config = {
|
437
|
-
"gemini": {
|
438
|
-
"api_key": "your-gemini-api-key",
|
439
|
-
},
|
440
403
|
"openai": {
|
441
404
|
"api_key": "your-openai-api-key",
|
442
405
|
},
|
@@ -476,9 +439,6 @@ This knowledge is accessible to all your AI agents.
|
|
476
439
|
from solana_agent import SolanaAgent
|
477
440
|
|
478
441
|
config = {
|
479
|
-
"gemini": {
|
480
|
-
"api_key": "your-gemini-api-key",
|
481
|
-
},
|
482
442
|
"openai": {
|
483
443
|
"api_key": "your-openai-api-key",
|
484
444
|
},
|
@@ -506,9 +466,6 @@ from solana_agent import SolanaAgent
|
|
506
466
|
from solana_agent.interfaces.services.routing import RoutingService as RoutingServiceInterface
|
507
467
|
|
508
468
|
config = {
|
509
|
-
"gemini": {
|
510
|
-
"api_key": "your-gemini-api-key",
|
511
|
-
},
|
512
469
|
"openai": {
|
513
470
|
"api_key": "your-openai-api-key",
|
514
471
|
},
|
@@ -561,6 +518,12 @@ The official example app written in FastAPI and Next.js
|
|
561
518
|
|
562
519
|
[Solana Agent Example App](https://github.com/truemagic-coder/solana-agent-app)
|
563
520
|
|
521
|
+
## Demo App
|
522
|
+
|
523
|
+
The official demo app written in FastAPI and Next.js
|
524
|
+
|
525
|
+
[Solana Agent Demo App](https://demo.solana-agent.com)
|
526
|
+
|
564
527
|
## Agent Framework Comparisons
|
565
528
|
|
566
529
|
[Compare Python Agent Frameworks](https://github.com/truemagic-coder/solana-agent/wiki/Agent-Framework-Comparisons)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
solana_agent/__init__.py,sha256=ceYeUpjIitpln8YK1r0JVJU8mzG6cRPYu-HLny3d-Tw,887
|
2
2
|
solana_agent/adapters/__init__.py,sha256=tiEEuuy0NF3ngc_tGEcRTt71zVI58v3dYY9RvMrF2Cg,204
|
3
|
-
solana_agent/adapters/llm_adapter.py,sha256=
|
3
|
+
solana_agent/adapters/llm_adapter.py,sha256=1MdDEtF0frG-ZvaDrcBUtzPa3u9oiPnw-JxEzdYRfM8,8560
|
4
4
|
solana_agent/adapters/mongodb_adapter.py,sha256=qqEFbY_v1XGyFXBmwd5HSXSSHnA9wWo-Hm1vGEyIG0k,2718
|
5
5
|
solana_agent/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
solana_agent/client/solana_agent.py,sha256=
|
6
|
+
solana_agent/client/solana_agent.py,sha256=cjzTUYIaCpH152XlkX7YxeY6z3Jja7KNfkAFdTxmZyc,5208
|
7
7
|
solana_agent/domains/__init__.py,sha256=HiC94wVPRy-QDJSSRywCRrhrFfTBeHjfi5z-QfZv46U,168
|
8
8
|
solana_agent/domains/agent.py,sha256=WTo-pEc66V6D_35cpDE-kTsw1SJM-dtylPZ7em5em7Q,2659
|
9
9
|
solana_agent/domains/routing.py,sha256=UDlgTjUoC9xIBVYu_dnf9-KG_bBgdEXAv_UtDOrYo0w,650
|
10
10
|
solana_agent/factories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
solana_agent/factories/agent_factory.py,sha256=
|
11
|
+
solana_agent/factories/agent_factory.py,sha256=wYfVqN99v9coh5nUWsmCKVCzNcuOkLTorIHRq5v0scw,5496
|
12
12
|
solana_agent/interfaces/__init__.py,sha256=IQs1WIM1FeKP1-kY2FEfyhol_dB-I-VAe2rD6jrVF6k,355
|
13
13
|
solana_agent/interfaces/client/client.py,sha256=CB8YuSsn-Lvinrb12huyIVaFpJqVDh8EHsHJi9SVXM4,1690
|
14
14
|
solana_agent/interfaces/plugins/plugins.py,sha256=T8HPBsekmzVwfU_Rizp-vtzAeYkMlKMYD7U9d0Wjq9c,3338
|
@@ -24,12 +24,12 @@ solana_agent/plugins/registry.py,sha256=5S0DlUQKogsg1zLiRUIGMHEmGYHtOovU-S-5W1Mw
|
|
24
24
|
solana_agent/plugins/tools/__init__.py,sha256=c0z7ij42gs94_VJrcn4Y8gUlTxMhsFNY6ahIsNswdLk,231
|
25
25
|
solana_agent/plugins/tools/auto_tool.py,sha256=DgES_cZ6xKSf_HJpFINpvJxrjVlk5oeqa7pZRBsR9SM,1575
|
26
26
|
solana_agent/repositories/__init__.py,sha256=fP83w83CGzXLnSdq-C5wbw9EhWTYtqE2lQTgp46-X_4,163
|
27
|
-
solana_agent/repositories/memory.py,sha256=
|
27
|
+
solana_agent/repositories/memory.py,sha256=0S3oJIwrJgLokFZHc5nL6Wva_CLdnkwJKfAwmMcpa9E,7853
|
28
28
|
solana_agent/services/__init__.py,sha256=ab_NXJmwYUCmCrCzuTlZ47bJZINW0Y0F5jfQ9OovidU,163
|
29
29
|
solana_agent/services/agent.py,sha256=M1Aukr9xKGP9mL0jM_JqdRdWSqG4LxF0y0PDAzE_fpY,24608
|
30
30
|
solana_agent/services/query.py,sha256=bhB6bZKWqsEf_fLXfsSC57q0CtmeDI6jUlxc9a0LGJw,11099
|
31
31
|
solana_agent/services/routing.py,sha256=hC5t98KZPHty9kMX27KcuxcmZlwjm0g59uMkR8n7k_w,6818
|
32
|
-
solana_agent-
|
33
|
-
solana_agent-
|
34
|
-
solana_agent-
|
35
|
-
solana_agent-
|
32
|
+
solana_agent-27.0.0.dist-info/LICENSE,sha256=BnSRc-NSFuyF2s496l_4EyrwAP6YimvxWcjPiJ0J7g4,1057
|
33
|
+
solana_agent-27.0.0.dist-info/METADATA,sha256=CB1bwsxwRz9Md1Il37MT2N4cqFGsqg59qyXTjfifDJ0,18577
|
34
|
+
solana_agent-27.0.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
35
|
+
solana_agent-27.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|