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.
@@ -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 = "gpt-4o-mini-tts"
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: Optional instructions for speech generation
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: Audio voice 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
- if "gemini" in config and "api_key" in config["gemini"]:
90
- # Create primary services
91
- agent_service = AgentService(
92
- llm_provider=llm_adapter,
93
- business_mission=business_mission,
94
- config=config,
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
- # Create routing service
117
- routing_service = RoutingService(
118
- llm_provider=llm_adapter,
119
- agent_service=agent_service,
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
- memory = await self.zep.memory.get(session_id=user_id)
129
- if memory is None or not hasattr(memory, 'context') or memory.context is None:
130
- return ""
131
- return memory.context
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 Zep memory: {e}")
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: 25.0.2
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.71.0,<2.0.0)
19
- Requires-Dist: pydantic (>=2.11.2,<3.0.0)
20
- Requires-Dist: pymongo (>=4.11.3,<5.0.0)
21
- Requires-Dist: zep-cloud (>=2.9.0,<3.0.0)
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) & [Gemini](https://aistudio.google.com/) - LLM Providers
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) or [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash)
86
- * [gpt-4o-mini-tts](https://platform.openai.com/docs/models/gpt-4o-mini-tts)
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=YN-53JvsV_B1rK1Bx3x6HLW8o_SNu8RiBfl6CaJSwfw,8625
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=M2AHloEFXEAM321je9xRdos5dXNQigQ0uYqnzXv7-iA,5208
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=mo5ggQR5I1ZCjYknv6vD1U-393WbMsTQEbM6YTb2pRA,6382
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=75zuqAMn4YFafiLsE8RvjFNd3p5ensXbFWv6VvlhFtE,7297
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-25.0.2.dist-info/LICENSE,sha256=BnSRc-NSFuyF2s496l_4EyrwAP6YimvxWcjPiJ0J7g4,1057
33
- solana_agent-25.0.2.dist-info/METADATA,sha256=gakEcfNMeaDQmwu7r1F9oUuls3FfQsW_ZJRCAE0KXVg,19644
34
- solana_agent-25.0.2.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
35
- solana_agent-25.0.2.dist-info/RECORD,,
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,,