solana-agent 23.0.6__py3-none-any.whl → 24.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 +1 -7
- solana_agent/client/solana_agent.py +0 -3
- solana_agent/interfaces/client/client.py +0 -1
- solana_agent/interfaces/providers/llm.py +0 -1
- solana_agent/interfaces/services/agent.py +0 -1
- solana_agent/interfaces/services/query.py +0 -1
- solana_agent/services/agent.py +0 -2
- solana_agent/services/query.py +0 -4
- {solana_agent-23.0.6.dist-info → solana_agent-24.0.0.dist-info}/METADATA +8 -24
- {solana_agent-23.0.6.dist-info → solana_agent-24.0.0.dist-info}/RECORD +12 -12
- {solana_agent-23.0.6.dist-info → solana_agent-24.0.0.dist-info}/LICENSE +0 -0
- {solana_agent-23.0.6.dist-info → solana_agent-24.0.0.dist-info}/WHEEL +0 -0
@@ -20,7 +20,6 @@ class OpenAIAdapter(LLMProvider):
|
|
20
20
|
self.client = OpenAI(api_key=api_key)
|
21
21
|
self.parse_model = "gpt-4o-mini"
|
22
22
|
self.text_model = "gpt-4o-mini"
|
23
|
-
self.internet_search_model = "gpt-4o-mini-search-preview"
|
24
23
|
self.transcription_model = "gpt-4o-mini-transcribe"
|
25
24
|
self.tts_model = "gpt-4o-mini-tts"
|
26
25
|
|
@@ -104,7 +103,6 @@ class OpenAIAdapter(LLMProvider):
|
|
104
103
|
self,
|
105
104
|
prompt: str,
|
106
105
|
system_prompt: str = "",
|
107
|
-
internet_search: bool = False,
|
108
106
|
) -> AsyncGenerator[str, None]: # pragma: no cover
|
109
107
|
"""Generate text from OpenAI models."""
|
110
108
|
messages = []
|
@@ -114,15 +112,11 @@ class OpenAIAdapter(LLMProvider):
|
|
114
112
|
|
115
113
|
messages.append({"role": "user", "content": prompt})
|
116
114
|
|
117
|
-
model = self.text_model
|
118
|
-
if internet_search:
|
119
|
-
model = self.internet_search_model
|
120
|
-
|
121
115
|
# Prepare request parameters
|
122
116
|
request_params = {
|
123
117
|
"messages": messages,
|
124
118
|
"stream": True,
|
125
|
-
"model":
|
119
|
+
"model": self.text_model,
|
126
120
|
}
|
127
121
|
try:
|
128
122
|
response = self.client.chat.completions.create(**request_params)
|
@@ -56,7 +56,6 @@ 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 = False,
|
60
59
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
61
60
|
"""Process a user message and return the response stream.
|
62
61
|
|
@@ -70,7 +69,6 @@ class SolanaAgent(SolanaAgentInterface):
|
|
70
69
|
audio_output_format: Audio output format
|
71
70
|
audio_input_format: Audio input format
|
72
71
|
router: Optional routing service for processing
|
73
|
-
internet_search: Flag to use OpenAI Internet search
|
74
72
|
|
75
73
|
Returns:
|
76
74
|
Async generator yielding response chunks (text strings or audio bytes)
|
@@ -85,7 +83,6 @@ class SolanaAgent(SolanaAgentInterface):
|
|
85
83
|
audio_input_format=audio_input_format,
|
86
84
|
prompt=prompt,
|
87
85
|
router=router,
|
88
|
-
internet_search=internet_search,
|
89
86
|
):
|
90
87
|
yield chunk
|
91
88
|
|
@@ -24,7 +24,6 @@ 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 = False,
|
28
27
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
29
28
|
"""Process a user message and return the response stream."""
|
30
29
|
pass
|
@@ -34,7 +34,6 @@ 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 = False,
|
38
37
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
39
38
|
"""Generate a response from an agent."""
|
40
39
|
pass
|
@@ -20,7 +20,6 @@ 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 = False,
|
24
23
|
) -> AsyncGenerator[Union[str, bytes], None]:
|
25
24
|
"""Process the user request and generate a response."""
|
26
25
|
pass
|
solana_agent/services/agent.py
CHANGED
@@ -177,7 +177,6 @@ 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 = False,
|
181
180
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
182
181
|
"""Generate a response with support for text/audio input/output."""
|
183
182
|
agent = next((a for a in self.agents if a.name == agent_name), None)
|
@@ -231,7 +230,6 @@ class AgentService(AgentServiceInterface):
|
|
231
230
|
async for chunk in self.llm_provider.generate_text(
|
232
231
|
prompt=query_text,
|
233
232
|
system_prompt=tool_calling_system_prompt,
|
234
|
-
internet_search=internet_search,
|
235
233
|
):
|
236
234
|
# Check if the chunk is JSON or a tool call
|
237
235
|
if (chunk.strip().startswith("{") or "{\"tool_call\":" in chunk) and not is_json:
|
solana_agent/services/query.py
CHANGED
@@ -49,7 +49,6 @@ class QueryService(QueryServiceInterface):
|
|
49
49
|
] = "mp4",
|
50
50
|
prompt: Optional[str] = None,
|
51
51
|
router: Optional[RoutingServiceInterface] = None,
|
52
|
-
internet_search: bool = False,
|
53
52
|
) -> AsyncGenerator[Union[str, bytes], None]: # pragma: no cover
|
54
53
|
"""Process the user request with appropriate agent.
|
55
54
|
|
@@ -63,7 +62,6 @@ class QueryService(QueryServiceInterface):
|
|
63
62
|
audio_input_format: Audio input format
|
64
63
|
prompt: Optional prompt for the agent
|
65
64
|
router: Optional routing service for processing
|
66
|
-
internet_search: Flag to use OpenAI Internet search
|
67
65
|
|
68
66
|
Yields:
|
69
67
|
Response chunks (text strings or audio bytes)
|
@@ -122,7 +120,6 @@ class QueryService(QueryServiceInterface):
|
|
122
120
|
audio_output_format=audio_output_format,
|
123
121
|
audio_instructions=audio_instructions,
|
124
122
|
prompt=prompt,
|
125
|
-
internet_search=internet_search,
|
126
123
|
):
|
127
124
|
yield audio_chunk
|
128
125
|
|
@@ -141,7 +138,6 @@ class QueryService(QueryServiceInterface):
|
|
141
138
|
memory_context=memory_context,
|
142
139
|
output_format="text",
|
143
140
|
prompt=prompt,
|
144
|
-
internet_search=internet_search,
|
145
141
|
):
|
146
142
|
yield chunk
|
147
143
|
full_text_response += chunk
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: solana-agent
|
3
|
-
Version:
|
3
|
+
Version: 24.0.0
|
4
4
|
Summary: Agentic IQ
|
5
5
|
License: MIT
|
6
6
|
Keywords: ai,openai,ai agents,agi
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
17
|
-
Requires-Dist: openai (>=1.
|
17
|
+
Requires-Dist: openai (>=1.71.0,<2.0.0)
|
18
18
|
Requires-Dist: pydantic (>=2.11.2,<3.0.0)
|
19
19
|
Requires-Dist: pymongo (>=4.11.3,<5.0.0)
|
20
20
|
Requires-Dist: zep-cloud (>=2.9.0,<3.0.0)
|
@@ -44,7 +44,7 @@ Build your AI business in three lines of code!
|
|
44
44
|
* Multi-Agent Swarm
|
45
45
|
* Multi-Modal Streaming (Text & Audio)
|
46
46
|
* Conversational Memory & History
|
47
|
-
*
|
47
|
+
* Internet Search
|
48
48
|
* Intelligent Routing
|
49
49
|
* Business Alignment
|
50
50
|
* Extensible Tooling
|
@@ -60,7 +60,7 @@ Build your AI business in three lines of code!
|
|
60
60
|
* Seamless text and audio streaming with real-time multi-modal processing
|
61
61
|
* Configurable audio voice characteristics via prompting
|
62
62
|
* Persistent memory that preserves context across all agent interactions
|
63
|
-
* Quick
|
63
|
+
* Quick Internet search to answer users' queries
|
64
64
|
* Streamlined message history for all agent interactions
|
65
65
|
* Intelligent query routing to agents with optimal domain expertise or your own custom routing
|
66
66
|
* Unified value system ensuring brand-aligned agent responses
|
@@ -82,7 +82,6 @@ Build your AI business in three lines of code!
|
|
82
82
|
* [gpt-4o-mini](https://platform.openai.com/docs/models/gpt-4o-mini)
|
83
83
|
* [gpt-4o-mini-tts](https://platform.openai.com/docs/models/gpt-4o-mini-tts)
|
84
84
|
* [gpt-4o-mini-transcribe](https://platform.openai.com/docs/models/gpt-4o-mini-transcribe)
|
85
|
-
* [gpt-4o-mini-search-preview](https://platform.openai.com/docs/models/gpt-4o-mini-search-preview)
|
86
85
|
|
87
86
|
## Installation
|
88
87
|
|
@@ -98,7 +97,7 @@ An agent can have multiple tools and will choose the best one to answer the user
|
|
98
97
|
|
99
98
|
Routing is determined by optimal domain expertise of the agent for the user query.
|
100
99
|
|
101
|
-
When the agent uses a tool it feeds the tool output back
|
100
|
+
When the agent uses a tool it feeds the tool output back to itself to generate the final response.
|
102
101
|
|
103
102
|
This is important as tools generally output unstructured and unformatted data that the agent needs to prepare for the user.
|
104
103
|
|
@@ -353,21 +352,6 @@ API Calls:
|
|
353
352
|
|
354
353
|
* If the Zep user and session isn't created it creates them for 2 API calls (POST)
|
355
354
|
|
356
|
-
### Internet Search
|
357
|
-
|
358
|
-
This mode is great for text output where the default response from OpenAI is enough.
|
359
|
-
|
360
|
-
However, it is also found to sometimes to not call tools when the tool should be called.
|
361
|
-
|
362
|
-
It is faster than calling `search_internet` from `sakit` by saving 2 API calls.
|
363
|
-
|
364
|
-
The default mode is disabled due to the issue of not calling tools properly and is not suitable for audio output.
|
365
|
-
|
366
|
-
```python
|
367
|
-
async for response in solana_agent.process("user123", "What is the latest news on Canada?", internet_search=True):
|
368
|
-
print(response, end="")
|
369
|
-
```
|
370
|
-
|
371
355
|
### Customize Speech
|
372
356
|
|
373
357
|
This is an audio to audio example using the `audio_instructions` parameter.
|
@@ -393,10 +377,10 @@ Tools can be used from plugins like Solana Agent Kit (sakit) or via inline tools
|
|
393
377
|
|
394
378
|
* Agents can only call one tool per response
|
395
379
|
* Agents choose the best tool for the job
|
396
|
-
*
|
397
|
-
*
|
380
|
+
* Solana Agent doesn't use OpenAI function calling (tools) as they don't support async functions
|
381
|
+
* Solana Agent tools are async functions
|
398
382
|
|
399
|
-
### Plugin
|
383
|
+
### Internet Search (Plugin Example)
|
400
384
|
|
401
385
|
`pip install sakit`
|
402
386
|
|
@@ -1,22 +1,22 @@
|
|
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=Q1oCOV3Zzk_hEtcr7OgclwEss_4M61B5do1TFN1541M,5534
|
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=M2AHloEFXEAM321je9xRdos5dXNQigQ0uYqnzXv7-iA,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
11
|
solana_agent/factories/agent_factory.py,sha256=mJQb1G0-gebizZvSVHm4NAxRMB1kemm2w_BAcYlN15Y,5496
|
12
12
|
solana_agent/interfaces/__init__.py,sha256=IQs1WIM1FeKP1-kY2FEfyhol_dB-I-VAe2rD6jrVF6k,355
|
13
|
-
solana_agent/interfaces/client/client.py,sha256=
|
13
|
+
solana_agent/interfaces/client/client.py,sha256=CB8YuSsn-Lvinrb12huyIVaFpJqVDh8EHsHJi9SVXM4,1690
|
14
14
|
solana_agent/interfaces/plugins/plugins.py,sha256=T8HPBsekmzVwfU_Rizp-vtzAeYkMlKMYD7U9d0Wjq9c,3338
|
15
15
|
solana_agent/interfaces/providers/data_storage.py,sha256=NqGeFvAzhz9rr-liLPRNCGjooB2EIhe-EVsMmX__b0M,1658
|
16
|
-
solana_agent/interfaces/providers/llm.py,sha256=
|
16
|
+
solana_agent/interfaces/providers/llm.py,sha256=AxfUCBVbyN2GaBOdAo_Oxoy7nP9-IvHQl8Xo8H-ZLNs,1552
|
17
17
|
solana_agent/interfaces/providers/memory.py,sha256=oNOH8WZXVW8assDigIWZAWiwkxbpDiKupxA2RB6tQvQ,1010
|
18
|
-
solana_agent/interfaces/services/agent.py,sha256=
|
19
|
-
solana_agent/interfaces/services/query.py,sha256=
|
18
|
+
solana_agent/interfaces/services/agent.py,sha256=ETAfz_VbtOgpTDIpo9tMSJnUAM5boPJXw9R7b_WEu3o,2113
|
19
|
+
solana_agent/interfaces/services/query.py,sha256=0C5yD8DYNrsJd3SA0lVb-ajm0fMqJJNPuPeHoab7-WQ,1340
|
20
20
|
solana_agent/interfaces/services/routing.py,sha256=UzJC-z-Q9puTWPFGEo2_CAhIxuxP5IRnze7S66NSrsI,397
|
21
21
|
solana_agent/plugins/__init__.py,sha256=coZdgJKq1ExOaj6qB810i3rEhbjdVlrkN76ozt_Ojgo,193
|
22
22
|
solana_agent/plugins/manager.py,sha256=Il49hXeqvu0b02pURNNp7mY8kp9_sqpi_vJIWBW5Hc0,5044
|
@@ -26,10 +26,10 @@ solana_agent/plugins/tools/auto_tool.py,sha256=DgES_cZ6xKSf_HJpFINpvJxrjVlk5oeqa
|
|
26
26
|
solana_agent/repositories/__init__.py,sha256=fP83w83CGzXLnSdq-C5wbw9EhWTYtqE2lQTgp46-X_4,163
|
27
27
|
solana_agent/repositories/memory.py,sha256=GYyNcwdQZKqfCjG_6uYh7YqjwwbUwvuVwbNim4aHN3I,7329
|
28
28
|
solana_agent/services/__init__.py,sha256=ab_NXJmwYUCmCrCzuTlZ47bJZINW0Y0F5jfQ9OovidU,163
|
29
|
-
solana_agent/services/agent.py,sha256
|
30
|
-
solana_agent/services/query.py,sha256=
|
29
|
+
solana_agent/services/agent.py,sha256=hvgZPOcGuojALlpf-zpZ20ga7j45CFCBxZyHLz6ge04,19960
|
30
|
+
solana_agent/services/query.py,sha256=IFEWYfkDCbp8W0FDooAor_UZe7H1cqgrud-CzoGlu-8,11154
|
31
31
|
solana_agent/services/routing.py,sha256=PMCSG5m3uLMaHMj3dxNvNfcFZaeaDi7kMr7AEBCzwDE,6499
|
32
|
-
solana_agent-
|
33
|
-
solana_agent-
|
34
|
-
solana_agent-
|
35
|
-
solana_agent-
|
32
|
+
solana_agent-24.0.0.dist-info/LICENSE,sha256=BnSRc-NSFuyF2s496l_4EyrwAP6YimvxWcjPiJ0J7g4,1057
|
33
|
+
solana_agent-24.0.0.dist-info/METADATA,sha256=FnvqQI4jAN_q3wAEArOQXe0YDQ0wmfxfx5XJ2lVKgH8,20270
|
34
|
+
solana_agent-24.0.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
35
|
+
solana_agent-24.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|