solana-agent 22.0.10__tar.gz → 23.0.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-22.0.10 → solana_agent-23.0.0}/PKG-INFO +19 -10
- {solana_agent-22.0.10 → solana_agent-23.0.0}/README.md +18 -9
- {solana_agent-22.0.10 → solana_agent-23.0.0}/pyproject.toml +2 -2
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/client/solana_agent.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/client/client.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/services/agent.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/services/query.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/services/agent.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/services/query.py +1 -1
- {solana_agent-22.0.10 → solana_agent-23.0.0}/LICENSE +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/adapters/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/adapters/llm_adapter.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/adapters/mongodb_adapter.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/client/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/domains/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/domains/agent.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/domains/routing.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/factories/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/factories/agent_factory.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/plugins/plugins.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/providers/data_storage.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/providers/llm.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/providers/memory.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/interfaces/services/routing.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/plugins/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/plugins/manager.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/plugins/registry.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/plugins/tools/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/plugins/tools/auto_tool.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/repositories/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/repositories/memory.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.0}/solana_agent/services/__init__.py +0 -0
- {solana_agent-22.0.10 → solana_agent-23.0.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: 23.0.0
|
4
4
|
Summary: Agentic IQ
|
5
5
|
License: MIT
|
6
6
|
Keywords: ai,openai,ai agents,agi
|
@@ -244,10 +244,18 @@ config = {
|
|
244
244
|
}
|
245
245
|
```
|
246
246
|
|
247
|
-
###
|
247
|
+
### Internet Search
|
248
|
+
|
249
|
+
This mode is great for text output where the default response from OpenAI is enough.
|
250
|
+
|
251
|
+
However, it is also found to sometimes not not call tools when the tool should be called.
|
252
|
+
|
253
|
+
It is faster than calling `search_internet` from `sakit` and saves at least 2 API calls.
|
254
|
+
|
255
|
+
The default mode is disabled due to the issue of not calling tools properly.
|
248
256
|
|
249
257
|
```python
|
250
|
-
async for response in solana_agent.process("user123", "Write me a poem.", internet_search=
|
258
|
+
async for response in solana_agent.process("user123", "Write me a poem.", internet_search=True):
|
251
259
|
print(response, end="")
|
252
260
|
```
|
253
261
|
|
@@ -272,14 +280,14 @@ async for response in solana_agent.process("user123", audio_content, output_form
|
|
272
280
|
|
273
281
|
## Tools
|
274
282
|
|
275
|
-
Tools can be used from plugins like Solana Agent Kit (sakit) or via
|
283
|
+
Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
276
284
|
|
277
285
|
* Agents can only call one tool per response
|
278
286
|
* Agents choose the best tool for the job
|
279
287
|
* Tools do not use OpenAI function calling
|
280
288
|
* Tools are async functions
|
281
289
|
|
282
|
-
### Tool Example
|
290
|
+
### Plugin Tool Example
|
283
291
|
|
284
292
|
`pip install sakit`
|
285
293
|
|
@@ -292,7 +300,8 @@ config = {
|
|
292
300
|
},
|
293
301
|
"tools": {
|
294
302
|
"search_internet": {
|
295
|
-
"api_key": "your-
|
303
|
+
"api_key": "your-api-key", # Required - either a Perplexity or OpenAI API key
|
304
|
+
"provider": "perplexity", # Optional, defaults to perplexity - can also be openai (lowercase)
|
296
305
|
},
|
297
306
|
},
|
298
307
|
"agents": [
|
@@ -312,11 +321,11 @@ config = {
|
|
312
321
|
|
313
322
|
solana_agent = SolanaAgent(config=config)
|
314
323
|
|
315
|
-
async for response in solana_agent.process("user123", "What are the latest AI developments?"
|
324
|
+
async for response in solana_agent.process("user123", "What are the latest AI developments?"):
|
316
325
|
print(response, end="")
|
317
326
|
```
|
318
327
|
|
319
|
-
###
|
328
|
+
### Inline Tool Example
|
320
329
|
|
321
330
|
```python
|
322
331
|
from solana_agent import SolanaAgent
|
@@ -398,11 +407,11 @@ async for response in solana_agent.process("user123", "What are the latest AI de
|
|
398
407
|
|
399
408
|
## Agent Training
|
400
409
|
|
401
|
-
Many use
|
410
|
+
Many use cases for Solana Agent require training your agents on your company data.
|
402
411
|
|
403
412
|
This can be accomplished via runtime prompt injection. Integrations that work well with this method are vector stores like Pinecone and FAQs.
|
404
413
|
|
405
|
-
This knowledge
|
414
|
+
This knowledge is accessible to all your AI agents.
|
406
415
|
|
407
416
|
```python
|
408
417
|
from solana_agent import SolanaAgent
|
@@ -220,10 +220,18 @@ config = {
|
|
220
220
|
}
|
221
221
|
```
|
222
222
|
|
223
|
-
###
|
223
|
+
### Internet Search
|
224
|
+
|
225
|
+
This mode is great for text output where the default response from OpenAI is enough.
|
226
|
+
|
227
|
+
However, it is also found to sometimes not not call tools when the tool should be called.
|
228
|
+
|
229
|
+
It is faster than calling `search_internet` from `sakit` and saves at least 2 API calls.
|
230
|
+
|
231
|
+
The default mode is disabled due to the issue of not calling tools properly.
|
224
232
|
|
225
233
|
```python
|
226
|
-
async for response in solana_agent.process("user123", "Write me a poem.", internet_search=
|
234
|
+
async for response in solana_agent.process("user123", "Write me a poem.", internet_search=True):
|
227
235
|
print(response, end="")
|
228
236
|
```
|
229
237
|
|
@@ -248,14 +256,14 @@ async for response in solana_agent.process("user123", audio_content, output_form
|
|
248
256
|
|
249
257
|
## Tools
|
250
258
|
|
251
|
-
Tools can be used from plugins like Solana Agent Kit (sakit) or via
|
259
|
+
Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools. Tools available via plugins integrate automatically with Solana Agent.
|
252
260
|
|
253
261
|
* Agents can only call one tool per response
|
254
262
|
* Agents choose the best tool for the job
|
255
263
|
* Tools do not use OpenAI function calling
|
256
264
|
* Tools are async functions
|
257
265
|
|
258
|
-
### Tool Example
|
266
|
+
### Plugin Tool Example
|
259
267
|
|
260
268
|
`pip install sakit`
|
261
269
|
|
@@ -268,7 +276,8 @@ config = {
|
|
268
276
|
},
|
269
277
|
"tools": {
|
270
278
|
"search_internet": {
|
271
|
-
"api_key": "your-
|
279
|
+
"api_key": "your-api-key", # Required - either a Perplexity or OpenAI API key
|
280
|
+
"provider": "perplexity", # Optional, defaults to perplexity - can also be openai (lowercase)
|
272
281
|
},
|
273
282
|
},
|
274
283
|
"agents": [
|
@@ -288,11 +297,11 @@ config = {
|
|
288
297
|
|
289
298
|
solana_agent = SolanaAgent(config=config)
|
290
299
|
|
291
|
-
async for response in solana_agent.process("user123", "What are the latest AI developments?"
|
300
|
+
async for response in solana_agent.process("user123", "What are the latest AI developments?"):
|
292
301
|
print(response, end="")
|
293
302
|
```
|
294
303
|
|
295
|
-
###
|
304
|
+
### Inline Tool Example
|
296
305
|
|
297
306
|
```python
|
298
307
|
from solana_agent import SolanaAgent
|
@@ -374,11 +383,11 @@ async for response in solana_agent.process("user123", "What are the latest AI de
|
|
374
383
|
|
375
384
|
## Agent Training
|
376
385
|
|
377
|
-
Many use
|
386
|
+
Many use cases for Solana Agent require training your agents on your company data.
|
378
387
|
|
379
388
|
This can be accomplished via runtime prompt injection. Integrations that work well with this method are vector stores like Pinecone and FAQs.
|
380
389
|
|
381
|
-
This knowledge
|
390
|
+
This knowledge is accessible to all your AI agents.
|
382
391
|
|
383
392
|
```python
|
384
393
|
from solana_agent import SolanaAgent
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "solana-agent"
|
3
|
-
version = "
|
3
|
+
version = "23.0.0"
|
4
4
|
description = "Agentic IQ"
|
5
5
|
authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
|
6
6
|
license = "MIT"
|
@@ -30,7 +30,7 @@ zep-cloud = "^2.9.0"
|
|
30
30
|
|
31
31
|
[tool.poetry.group.dev.dependencies]
|
32
32
|
pytest = "^8.3.5"
|
33
|
-
pytest-cov = "^6.1.
|
33
|
+
pytest-cov = "^6.1.1"
|
34
34
|
pytest-asyncio = "^0.26.0"
|
35
35
|
pytest-mock = "^3.14.0"
|
36
36
|
pytest-github-actions-annotate-failures = "^0.3.0"
|
@@ -56,7 +56,7 @@ class SolanaAgent(SolanaAgentInterface):
|
|
56
56
|
"flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "wav", "webm"
|
57
57
|
] = "mp4",
|
58
58
|
router: Optional[RoutingInterface] = None,
|
59
|
-
internet_search: bool =
|
59
|
+
internet_search: bool = False,
|
60
60
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
61
61
|
"""Process a user message and return the response stream.
|
62
62
|
|
@@ -24,7 +24,7 @@ class SolanaAgent(ABC):
|
|
24
24
|
"flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "wav", "webm"
|
25
25
|
] = "mp4",
|
26
26
|
router: Optional[RoutingInterface] = None,
|
27
|
-
internet_search: bool =
|
27
|
+
internet_search: bool = False,
|
28
28
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
29
29
|
"""Process a user message and return the response stream."""
|
30
30
|
pass
|
@@ -34,7 +34,7 @@ class AgentService(ABC):
|
|
34
34
|
"flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "wav", "webm"
|
35
35
|
] = "mp4",
|
36
36
|
prompt: Optional[str] = None,
|
37
|
-
internet_search: bool =
|
37
|
+
internet_search: bool = False,
|
38
38
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
39
39
|
"""Generate a response from an agent."""
|
40
40
|
pass
|
@@ -20,7 +20,7 @@ class QueryService(ABC):
|
|
20
20
|
"flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "wav", "webm"
|
21
21
|
] = "mp4",
|
22
22
|
prompt: Optional[str] = None,
|
23
|
-
internet_search: bool =
|
23
|
+
internet_search: bool = False,
|
24
24
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
25
25
|
"""Process the user request and generate a response."""
|
26
26
|
pass
|
@@ -177,7 +177,7 @@ class AgentService(AgentServiceInterface):
|
|
177
177
|
"flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "wav", "webm"
|
178
178
|
] = "mp4",
|
179
179
|
prompt: Optional[str] = None,
|
180
|
-
internet_search: bool =
|
180
|
+
internet_search: bool = False,
|
181
181
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
182
182
|
"""Generate a response with support for text/audio input/output."""
|
183
183
|
agent = next((a for a in self.agents if a.name == agent_name), None)
|
@@ -49,7 +49,7 @@ class QueryService(QueryServiceInterface):
|
|
49
49
|
] = "mp4",
|
50
50
|
prompt: Optional[str] = None,
|
51
51
|
router: Optional[RoutingServiceInterface] = None,
|
52
|
-
internet_search: bool =
|
52
|
+
internet_search: bool = False,
|
53
53
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
54
54
|
"""Process the user request with appropriate agent.
|
55
55
|
|
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-22.0.10 → solana_agent-23.0.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
|