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.
- {solana_agent-26.0.0 → solana_agent-27.1.0}/PKG-INFO +46 -7
- {solana_agent-26.0.0 → solana_agent-27.1.0}/README.md +41 -2
- {solana_agent-26.0.0 → solana_agent-27.1.0}/pyproject.toml +5 -5
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/llm_adapter.py +19 -3
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/factories/agent_factory.py +38 -1
- {solana_agent-26.0.0 → solana_agent-27.1.0}/LICENSE +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/adapters/mongodb_adapter.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/client/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/client/solana_agent.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/agent.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/domains/routing.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/factories/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/client/client.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/plugins/plugins.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/data_storage.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/llm.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/providers/memory.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/agent.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/query.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/interfaces/services/routing.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/manager.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/registry.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/tools/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/plugins/tools/auto_tool.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/repositories/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/repositories/memory.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/__init__.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/agent.py +0 -0
- {solana_agent-26.0.0 → solana_agent-27.1.0}/solana_agent/services/query.py +0 -0
- {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:
|
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.
|
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.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)
|
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
|
-
* [
|
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)
|
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
|
-
* [
|
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 = "
|
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.
|
27
|
-
pydantic = "^2.11.
|
28
|
-
pymongo = "^4.
|
29
|
-
zep-cloud = "^2.
|
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
|
-
|
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
|
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
|
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-26.0.0 → solana_agent-27.1.0}/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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|