solana-agent 26.0.0__tar.gz → 27.1.0__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.
Files changed (35) hide show
  1. {solana_agent-26.0.0 → solana_agent-27.1.0}/PKG-INFO +46 -7
  2. {solana_agent-26.0.0 → solana_agent-27.1.0}/README.md +41 -2
  3. {solana_agent-26.0.0 → solana_agent-27.1.0}/pyproject.toml +5 -5
  4. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/llm_adapter.py +19 -3
  5. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/factories/agent_factory.py +38 -1
  6. {solana_agent-26.0.0 → solana_agent-27.1.0}/LICENSE +0 -0
  7. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/__init__.py +0 -0
  8. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/__init__.py +0 -0
  9. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/mongodb_adapter.py +0 -0
  10. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/client/__init__.py +0 -0
  11. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/client/solana_agent.py +0 -0
  12. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/__init__.py +0 -0
  13. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/agent.py +0 -0
  14. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/routing.py +0 -0
  15. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/factories/__init__.py +0 -0
  16. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/__init__.py +0 -0
  17. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/client/client.py +0 -0
  18. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/plugins/plugins.py +0 -0
  19. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/data_storage.py +0 -0
  20. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/llm.py +0 -0
  21. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/memory.py +0 -0
  22. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/agent.py +0 -0
  23. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/query.py +0 -0
  24. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/routing.py +0 -0
  25. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/__init__.py +0 -0
  26. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/manager.py +0 -0
  27. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/registry.py +0 -0
  28. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/tools/__init__.py +0 -0
  29. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/tools/auto_tool.py +0 -0
  30. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/repositories/__init__.py +0 -0
  31. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/repositories/memory.py +0 -0
  32. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/__init__.py +0 -0
  33. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/agent.py +0 -0
  34. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/query.py +0 -0
  35. {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/routing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: solana-agent
3
- Version: 26.0.0
3
+ Version: 27.1.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.1,<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,16 +76,25 @@ 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), [Google](https://ai.google.dev), [xAI](https://x.ai) - LLM Providers
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
- * [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash) or [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
85
+ * [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
86
+ * [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash)
87
+ * [grok-3-mini-fast-beta](https://docs.x.ai/docs/models#models-and-pricing)
86
88
  * [tts-1](https://platform.openai.com/docs/models/tts-1)
87
89
  * [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe)
88
90
 
91
+ It is recommended to use all three LLM providers as it is the best setup.
92
+
93
+ Gemini makes the routing about 2x faster.
94
+
95
+ Grok is a fast reasoning model and makes the answers and conversation much better.
96
+
97
+ OpenAI is required while Gemini and Grok are optional.
89
98
 
90
99
  ## Installation
91
100
 
@@ -146,6 +155,9 @@ Keep this in mind while designing your agentic systems using Solana Agent.
146
155
  from solana_agent import SolanaAgent
147
156
 
148
157
  config = {
158
+ "grok": {
159
+ "api_key": "your-grok-api-key",
160
+ },
149
161
  "gemini": {
150
162
  "api_key": "your-gemini-api-key",
151
163
  },
@@ -178,6 +190,9 @@ async for response in solana_agent.process("user123", "What are the latest AI de
178
190
  from solana_agent import SolanaAgent
179
191
 
180
192
  config = {
193
+ "grok": {
194
+ "api_key": "your-grok-api-key",
195
+ },
181
196
  "gemini": {
182
197
  "api_key": "your-gemini-api-key",
183
198
  },
@@ -212,6 +227,9 @@ async for response in solana_agent.process("user123", audio_content, output_form
212
227
  from solana_agent import SolanaAgent
213
228
 
214
229
  config = {
230
+ "grok": {
231
+ "api_key": "your-grok-api-key",
232
+ },
215
233
  "gemini": {
216
234
  "api_key": "your-gemini-api-key",
217
235
  },
@@ -244,6 +262,9 @@ async for response in solana_agent.process("user123", "What is the latest news o
244
262
  from solana_agent import SolanaAgent
245
263
 
246
264
  config = {
265
+ "grok": {
266
+ "api_key": "your-grok-api-key",
267
+ },
247
268
  "gemini": {
248
269
  "api_key": "your-gemini-api-key",
249
270
  },
@@ -330,6 +351,9 @@ Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools
330
351
  from solana_agent import SolanaAgent
331
352
 
332
353
  config = {
354
+ "grok": {
355
+ "api_key": "your-grok-api-key",
356
+ },
333
357
  "gemini": {
334
358
  "api_key": "your-gemini-api-key",
335
359
  },
@@ -415,6 +439,9 @@ class TestTool(Tool):
415
439
  }
416
440
 
417
441
  config = {
442
+ "grok": {
443
+ "api_key": "your-grok-api-key",
444
+ },
418
445
  "gemini": {
419
446
  "api_key": "your-gemini-api-key",
420
447
  },
@@ -457,6 +484,9 @@ This knowledge is accessible to all your AI agents.
457
484
  from solana_agent import SolanaAgent
458
485
 
459
486
  config = {
487
+ "grok": {
488
+ "api_key": "your-grok-api-key",
489
+ },
460
490
  "gemini": {
461
491
  "api_key": "your-gemini-api-key",
462
492
  },
@@ -487,6 +517,9 @@ from solana_agent import SolanaAgent
487
517
  from solana_agent.interfaces.services.routing import RoutingService as RoutingServiceInterface
488
518
 
489
519
  config = {
520
+ "grok": {
521
+ "api_key": "your-grok-api-key",
522
+ },
490
523
  "gemini": {
491
524
  "api_key": "your-gemini-api-key",
492
525
  },
@@ -542,6 +575,12 @@ The official example app written in FastAPI and Next.js
542
575
 
543
576
  [Solana Agent Example App](https://github.com/truemagic-coder/solana-agent-app)
544
577
 
578
+ ## Demo App
579
+
580
+ The official demo app written in FastAPI and Next.js
581
+
582
+ [Solana Agent Demo App](https://demo.solana-agent.com)
583
+
545
584
  ## Agent Framework Comparisons
546
585
 
547
586
  [Compare Python Agent Frameworks](https://github.com/truemagic-coder/solana-agent/wiki/Agent-Framework-Comparisons)
@@ -51,16 +51,25 @@ Build your AI business in three lines of code!
51
51
  ### Tech
52
52
 
53
53
  * [Python](https://python.org) - Programming Language
54
- * [OpenAI](https://openai.com) & [Gemini](https://aistudio.google.com/) - LLM Providers
54
+ * [OpenAI](https://openai.com), [Google](https://ai.google.dev), [xAI](https://x.ai) - LLM Providers
55
55
  * [MongoDB](https://mongodb.com) - Conversational History (optional)
56
56
  * [Zep Cloud](https://getzep.com) - Conversational Memory (optional)
57
57
 
58
58
  ### LLMs
59
59
 
60
- * [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash) or [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
60
+ * [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
61
+ * [gemini-2.0-flash](https://ai.google.dev/gemini-api/docs/models#gemini-2.0-flash)
62
+ * [grok-3-mini-fast-beta](https://docs.x.ai/docs/models#models-and-pricing)
61
63
  * [tts-1](https://platform.openai.com/docs/models/tts-1)
62
64
  * [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe)
63
65
 
66
+ It is recommended to use all three LLM providers as it is the best setup.
67
+
68
+ Gemini makes the routing about 2x faster.
69
+
70
+ Grok is a fast reasoning model and makes the answers and conversation much better.
71
+
72
+ OpenAI is required while Gemini and Grok are optional.
64
73
 
65
74
  ## Installation
66
75
 
@@ -121,6 +130,9 @@ Keep this in mind while designing your agentic systems using Solana Agent.
121
130
  from solana_agent import SolanaAgent
122
131
 
123
132
  config = {
133
+ "grok": {
134
+ "api_key": "your-grok-api-key",
135
+ },
124
136
  "gemini": {
125
137
  "api_key": "your-gemini-api-key",
126
138
  },
@@ -153,6 +165,9 @@ async for response in solana_agent.process("user123", "What are the latest AI de
153
165
  from solana_agent import SolanaAgent
154
166
 
155
167
  config = {
168
+ "grok": {
169
+ "api_key": "your-grok-api-key",
170
+ },
156
171
  "gemini": {
157
172
  "api_key": "your-gemini-api-key",
158
173
  },
@@ -187,6 +202,9 @@ async for response in solana_agent.process("user123", audio_content, output_form
187
202
  from solana_agent import SolanaAgent
188
203
 
189
204
  config = {
205
+ "grok": {
206
+ "api_key": "your-grok-api-key",
207
+ },
190
208
  "gemini": {
191
209
  "api_key": "your-gemini-api-key",
192
210
  },
@@ -219,6 +237,9 @@ async for response in solana_agent.process("user123", "What is the latest news o
219
237
  from solana_agent import SolanaAgent
220
238
 
221
239
  config = {
240
+ "grok": {
241
+ "api_key": "your-grok-api-key",
242
+ },
222
243
  "gemini": {
223
244
  "api_key": "your-gemini-api-key",
224
245
  },
@@ -305,6 +326,9 @@ Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools
305
326
  from solana_agent import SolanaAgent
306
327
 
307
328
  config = {
329
+ "grok": {
330
+ "api_key": "your-grok-api-key",
331
+ },
308
332
  "gemini": {
309
333
  "api_key": "your-gemini-api-key",
310
334
  },
@@ -390,6 +414,9 @@ class TestTool(Tool):
390
414
  }
391
415
 
392
416
  config = {
417
+ "grok": {
418
+ "api_key": "your-grok-api-key",
419
+ },
393
420
  "gemini": {
394
421
  "api_key": "your-gemini-api-key",
395
422
  },
@@ -432,6 +459,9 @@ This knowledge is accessible to all your AI agents.
432
459
  from solana_agent import SolanaAgent
433
460
 
434
461
  config = {
462
+ "grok": {
463
+ "api_key": "your-grok-api-key",
464
+ },
435
465
  "gemini": {
436
466
  "api_key": "your-gemini-api-key",
437
467
  },
@@ -462,6 +492,9 @@ from solana_agent import SolanaAgent
462
492
  from solana_agent.interfaces.services.routing import RoutingService as RoutingServiceInterface
463
493
 
464
494
  config = {
495
+ "grok": {
496
+ "api_key": "your-grok-api-key",
497
+ },
465
498
  "gemini": {
466
499
  "api_key": "your-gemini-api-key",
467
500
  },
@@ -517,6 +550,12 @@ The official example app written in FastAPI and Next.js
517
550
 
518
551
  [Solana Agent Example App](https://github.com/truemagic-coder/solana-agent-app)
519
552
 
553
+ ## Demo App
554
+
555
+ The official demo app written in FastAPI and Next.js
556
+
557
+ [Solana Agent Demo App](https://demo.solana-agent.com)
558
+
520
559
  ## Agent Framework Comparisons
521
560
 
522
561
  [Compare Python Agent Frameworks](https://github.com/truemagic-coder/solana-agent/wiki/Agent-Framework-Comparisons)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "solana-agent"
3
- version = "26.0.0"
3
+ version = "27.1.0"
4
4
  description = "Agentic IQ"
5
5
  authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
6
6
  license = "MIT"
@@ -23,10 +23,10 @@ python_paths = [".", "tests"]
23
23
 
24
24
  [tool.poetry.dependencies]
25
25
  python = ">=3.12,<4.0"
26
- openai = "^1.71.0"
27
- pydantic = "^2.11.2"
28
- pymongo = "^4.11.3"
29
- zep-cloud = "^2.9.0"
26
+ openai = "^1.72.0"
27
+ pydantic = "^2.11.3"
28
+ pymongo = "^4.12.0"
29
+ zep-cloud = "^2.10.1"
30
30
  instructor = "^1.7.9"
31
31
 
32
32
  [tool.poetry.group.dev.dependencies]
@@ -170,7 +170,6 @@ class OpenAIAdapter(LLMProvider):
170
170
  if model:
171
171
  self.parse_model = model
172
172
 
173
- # Create a patched client with TOOLS_STRICT mode
174
173
  patched_client = instructor.from_openai(
175
174
  client, mode=Mode.TOOLS_STRICT)
176
175
 
@@ -187,9 +186,17 @@ class OpenAIAdapter(LLMProvider):
187
186
  f"Error with instructor parsing (TOOLS_STRICT mode): {e}")
188
187
 
189
188
  try:
189
+ if api_key and base_url:
190
+ client = AsyncOpenAI(api_key=api_key, base_url=base_url)
191
+ else:
192
+ client = self.client
193
+
194
+ if model:
195
+ self.parse_model = model
196
+
190
197
  # First fallback: Try regular JSON mode
191
198
  patched_client = instructor.from_openai(
192
- self.client, mode=Mode.JSON)
199
+ client, mode=Mode.JSON)
193
200
  response = await patched_client.chat.completions.create(
194
201
  model=self.parse_model,
195
202
  messages=messages,
@@ -201,6 +208,15 @@ class OpenAIAdapter(LLMProvider):
201
208
  print(f"JSON mode fallback also failed: {json_error}")
202
209
 
203
210
  try:
211
+ if api_key and base_url:
212
+ client = AsyncOpenAI(
213
+ api_key=api_key, base_url=base_url)
214
+ else:
215
+ client = self.client
216
+
217
+ if model:
218
+ self.parse_model = model
219
+
204
220
  # Final fallback: Manual extraction with a detailed prompt
205
221
  fallback_system_prompt = f"""
206
222
  {system_prompt}
@@ -212,7 +228,7 @@ class OpenAIAdapter(LLMProvider):
212
228
  """
213
229
 
214
230
  # Regular completion without instructor
215
- completion = await self.client.chat.completions.create(
231
+ completion = await client.chat.completions.create(
216
232
  model=self.parse_model,
217
233
  messages=[
218
234
  {"role": "system", "content": fallback_system_prompt},
@@ -86,7 +86,7 @@ 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"]:
89
+ if "gemini" in config and "api_key" in config["gemini"] and not "grok" in config:
90
90
  # Create primary services
91
91
  agent_service = AgentService(
92
92
  llm_provider=llm_adapter,
@@ -105,6 +105,43 @@ class SolanaAgentFactory:
105
105
  base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
106
106
  model="gemini-2.0-flash",
107
107
  )
108
+
109
+ elif "gemini" in config and "api_key" in config["gemini"] and "grok" in config and "api_key" in config["grok"]:
110
+ # Create primary services
111
+ agent_service = AgentService(
112
+ llm_provider=llm_adapter,
113
+ business_mission=business_mission,
114
+ config=config,
115
+ api_key=config["grok"]["api_key"],
116
+ base_url="https://api.x.ai/v1",
117
+ model="grok-3-mini-fast-beta",
118
+ )
119
+ # Create routing service
120
+ routing_service = RoutingService(
121
+ llm_provider=llm_adapter,
122
+ agent_service=agent_service,
123
+ api_key=config["gemini"]["api_key"],
124
+ base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
125
+ model="gemini-2.0-flash",
126
+ )
127
+
128
+ elif "grok" in config and "api_key" in config["grok"] and not "gemini" in config:
129
+ # Create primary services
130
+ agent_service = AgentService(
131
+ llm_provider=llm_adapter,
132
+ business_mission=business_mission,
133
+ config=config,
134
+ api_key=config["grok"]["api_key"],
135
+ base_url="https://api.x.ai/v1",
136
+ model="grok-3-mini-fast-beta",
137
+ )
138
+
139
+ # Create routing service
140
+ routing_service = RoutingService(
141
+ llm_provider=llm_adapter,
142
+ agent_service=agent_service,
143
+ )
144
+
108
145
  else:
109
146
  # Create primary services
110
147
  agent_service = AgentService(
File without changes