sopel-ai 1.1.0__py3-none-any.whl → 1.3.4__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.
sopel_ai/core.py CHANGED
@@ -54,6 +54,7 @@ def _checkDB(fileName: str) -> TinyDB:
54
54
 
55
55
  if not _database:
56
56
  _database = TinyDB(fileName)
57
+ _database.table('_default', cache_size = 0)
57
58
 
58
59
  return _database
59
60
 
@@ -201,10 +202,10 @@ def setModelForUser(modelID: int, nick: str, fileNameDB: str, key = None) -> str
201
202
  if modelID not in range(len(models)):
202
203
  raise SopelAIError('modelID outside of available models index range')
203
204
 
204
- Preference = Query()
205
+ query = Query()
205
206
 
206
- if _database.search(Preference.nick == nick):
207
- _database.update({ 'model': models[modelID], }, Preference.nick == nick)
207
+ if _database.search(query.nick == nick):
208
+ _database.update({ 'model': models[modelID], }, query.nick == nick)
208
209
  else:
209
210
  _database.insert({ 'nick': nick, 'model': models[modelID], })
210
211
 
@@ -244,8 +245,11 @@ def getModelForUser(nick: str, fileNameDB: str, key = None) -> str:
244
245
  Preference = Query()
245
246
  preference = _database.search(Preference.nick == nick)
246
247
  if preference:
247
- model = preference[0]['model']
248
248
  client = PerplexityClient(key = key, endpoint = PERPLEXITY_API_URL)
249
+ model = preference[0]['model']
250
+ # TODO: Implement unit test for this case.
251
+ if model not in client.models.keys():
252
+ model = tuple(client.models.keys())[0]
249
253
  client.model = model
250
254
  _clientCache[nick] = client
251
255
  return model
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sopel-ai
3
- Version: 1.1.0
3
+ Version: 1.3.4
4
4
  Summary: Sopel AI - an LLM enhanced chat bot plug-in
5
5
  Author-email: The SopelAI team <sopel_ai@cime.net>
6
+ License: BSD-3-Clause
6
7
  Project-URL: Homepage, https://github.com/pr3d4t0r/sopel_ai
7
8
  Project-URL: Bug Tracker, https://github.com/pr3d4t0r/sopel_ai/issues
8
9
  Keywords: ai,bot,irc,llm,plugin,sopel
@@ -19,11 +20,11 @@ Classifier: Topic :: Utilities
19
20
  Requires-Python: >=3.9
20
21
  Description-Content-Type: text/markdown
21
22
  License-File: LICENSE.txt
22
- Requires-Dist: perplexipy
23
+ Requires-Dist: perplexipy (==1.1.4)
23
24
  Requires-Dist: sopel (>=7.1)
24
25
  Requires-Dist: tinydb
25
26
 
26
- % sopel_ai(1) Version 1.1.0 chatbot plugin
27
+ % sopel_ai(1) Version 1.3.4 chatbot plugin
27
28
 
28
29
  Name
29
30
  ====
@@ -151,6 +152,52 @@ llm_key = pplx-3a45enteryourkeykere
151
152
  ```
152
153
 
153
154
 
155
+ Docker
156
+ ======
157
+ Sopel AI is dockerized and available from Docker Hub as pr3d4t0r/sopel_ai. The
158
+ version tag is the same as the latest version number for Sopel AI.
159
+
160
+ The examples in this section assume execution from the local file system. Adapt
161
+ as needed to run in a Kubernets cluster or other deployment method.
162
+
163
+
164
+ ### First time
165
+
166
+ The Sopel + AI configuration file must be created:
167
+
168
+ ```bash
169
+ docker run -ti -v ${HOME}/sopel_ai_data:/home/sopel_ai \
170
+ pr3d4t0r/sopel_ai:latest \
171
+ sopel configure
172
+ ```
173
+
174
+ The API key and other relevant configuration data must be provided at this time.
175
+ `$HOME/sopel_ai_data` is volume mapped to the container's `/home/sopel_ai/.sopel
176
+ directory. Ensure that your host has write permissions in the shared volume.
177
+
178
+ The `pr3d4t0r/sopel_ai:latest` image is used if no version is specified. The
179
+ image update policy is left to the sysops and is not automatic.
180
+
181
+ Once `$HOME/sopel_ai_data` exists it's possible to copy the contents of a
182
+ different `~/.sopel` directory to it and use is as the configuration and Sopel
183
+ AI database store.
184
+
185
+
186
+ ### Starting Sopel AI
187
+
188
+ A Docker Compose file is provided as an example of how to start the service,
189
+ <a href='./dockerized/docker-compose.yaml' target='_blank'>docker-file.yaml</a>. With this Docker Compose
190
+ file in the current directory, start the service with:
191
+
192
+ ```bash
193
+ docker-compose up [-d] sopel_ai
194
+
195
+ ```
196
+
197
+ The `-d` parameter daemonizes the service. Without it, the service will start
198
+ and display its output in the current console.
199
+
200
+
154
201
  License
155
202
  =======
156
203
  The **Sopel AI** Sopel plugin, package, documentation, and examples are licensed
@@ -0,0 +1,11 @@
1
+ sopel_ai/__init__.py,sha256=UXSuXZj_p860rLAiewSe5nbKg-qbIEcXq6jkqYmaMnI,2531
2
+ sopel_ai/config.py,sha256=y0vbvfeDjjfLUOvTJ3W56mAGVpJxeizrXJbCaFW4ZXk,867
3
+ sopel_ai/core.py,sha256=m5XutY1Rm7z-nh1_qPOAcrnfP20BekMH6jveXoSX3NQ,7425
4
+ sopel_ai/errors.py,sha256=XMVgFk4Rw64Z0UO3ZInp-N6LP0GRG8NFIuXKnhu5rLo,192
5
+ sopel_ai/plugin.py,sha256=51mYp6B_mUtgS6mL-IMhK8Qiz_Rw_qAwmTLdML-qQ2o,6800
6
+ sopel_ai-1.3.4.dist-info/LICENSE.txt,sha256=I8aHapysmbM9F3y-rUfp011GQoosNO5L8pzl7IKgPnE,1531
7
+ sopel_ai-1.3.4.dist-info/METADATA,sha256=yUU8251bdLtOwpudjsUOZLdjAZ9DeSrsdmXVVXLVx98,6210
8
+ sopel_ai-1.3.4.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
9
+ sopel_ai-1.3.4.dist-info/entry_points.txt,sha256=7Juxcn6L4j6F83TjkviiTwiyXLM4gZxAAXFQDR2G_m4,43
10
+ sopel_ai-1.3.4.dist-info/top_level.txt,sha256=kpNMzNEGbhCXkyn7oc3uQPmrX1J6qLxn59IcZBpwSYg,9
11
+ sopel_ai-1.3.4.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- sopel_ai/__init__.py,sha256=UXSuXZj_p860rLAiewSe5nbKg-qbIEcXq6jkqYmaMnI,2531
2
- sopel_ai/config.py,sha256=y0vbvfeDjjfLUOvTJ3W56mAGVpJxeizrXJbCaFW4ZXk,867
3
- sopel_ai/core.py,sha256=r5lnH8lcXenc2Ln3Qha2hoAggWUP5ZyZniZrdl9IIsQ,7240
4
- sopel_ai/errors.py,sha256=XMVgFk4Rw64Z0UO3ZInp-N6LP0GRG8NFIuXKnhu5rLo,192
5
- sopel_ai/plugin.py,sha256=51mYp6B_mUtgS6mL-IMhK8Qiz_Rw_qAwmTLdML-qQ2o,6800
6
- sopel_ai-1.1.0.dist-info/LICENSE.txt,sha256=I8aHapysmbM9F3y-rUfp011GQoosNO5L8pzl7IKgPnE,1531
7
- sopel_ai-1.1.0.dist-info/METADATA,sha256=niUEpHboA7k6c-LzYeoRyEvwVFSOps_2LWBbQzlUEJY,4681
8
- sopel_ai-1.1.0.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
9
- sopel_ai-1.1.0.dist-info/entry_points.txt,sha256=7Juxcn6L4j6F83TjkviiTwiyXLM4gZxAAXFQDR2G_m4,43
10
- sopel_ai-1.1.0.dist-info/top_level.txt,sha256=kpNMzNEGbhCXkyn7oc3uQPmrX1J6qLxn59IcZBpwSYg,9
11
- sopel_ai-1.1.0.dist-info/RECORD,,