blue-assistant 4.9.1__py3-none-any.whl → 4.21.1__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.
@@ -7,7 +7,7 @@ function blue_assistant_chat() {
7
7
  local do_upload=$(abcli_option_int "$options" upload $(abcli_not $do_dryrun))
8
8
 
9
9
  local chat_options=$2
10
- local interactive=$(abcli_option_int "$options" interact 1)
10
+ local interactive=$(abcli_option_int "$chat_options" interact 1)
11
11
 
12
12
  local object_name=$(abcli_clarify_object $3 chat-$(abcli_string_timestamp))
13
13
  [[ "$do_download" == 1 ]] &&
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} An AI Assistant."
6
6
 
7
- VERSION = "4.9.1"
7
+ VERSION = "4.21.1"
8
8
 
9
9
  REPO_NAME = "blue-assistant"
10
10
 
@@ -0,0 +1,109 @@
1
+ from blue_objects import file, objects
2
+ from blue_options import string
3
+ from blue_objects.metadata import post_to_object, get_from_object
4
+ from blue_options.terminal.functions import hr
5
+ from openai_commands.prompt_completion.api import complete_prompt
6
+
7
+ from blue_assistant import ICON
8
+ from blue_assistant.logger import logger
9
+
10
+
11
+ class ChatContext:
12
+ def __init__(
13
+ self,
14
+ object_name: str,
15
+ load_history: bool = True,
16
+ verbose: bool = False,
17
+ ):
18
+ self.verbose = verbose
19
+
20
+ self.ended: bool = False
21
+
22
+ self.object_name = object_name
23
+
24
+ self.history = (
25
+ get_from_object(
26
+ self.object_name,
27
+ "history",
28
+ [],
29
+ )
30
+ if load_history
31
+ else []
32
+ )
33
+
34
+ def chat(
35
+ self,
36
+ interactive: bool = True,
37
+ ) -> bool:
38
+ logger.info('Type in "help" for help.')
39
+
40
+ while True:
41
+ prompt = input(f"{ICON} > ") if interactive else ""
42
+
43
+ if not self.process_prompt(prompt):
44
+ return False
45
+
46
+ if self.ended or not interactive:
47
+ break
48
+
49
+ print(hr(width=21))
50
+
51
+ return True
52
+
53
+ def process_prompt(
54
+ self,
55
+ prompt: str,
56
+ max_tokens: int = 2000,
57
+ ) -> bool:
58
+ if prompt in ["help", "?", ""]:
59
+ return self.show_help()
60
+
61
+ if prompt in ["quit", "exit", "q"]:
62
+ self.ended = True
63
+ return True
64
+
65
+ success, response, metadata = complete_prompt(
66
+ prompt=prompt,
67
+ max_tokens=max_tokens,
68
+ verbose=self.verbose,
69
+ )
70
+ if not success:
71
+ return success
72
+ logger.info(response)
73
+
74
+ logger.info(f"🪄 {prompt}")
75
+
76
+ id_ = string.pretty_date(
77
+ as_filename=True,
78
+ unique=True,
79
+ )
80
+ self.history.append(
81
+ {
82
+ "id": id_,
83
+ "prompt": prompt,
84
+ "response": response,
85
+ }
86
+ )
87
+
88
+ return file.save_yaml(
89
+ objects.path_of(
90
+ object_name=self.object_name,
91
+ filename=f"{id_}.yaml",
92
+ ),
93
+ metadata,
94
+ )
95
+
96
+ def save(self) -> bool:
97
+ return post_to_object(
98
+ self.object_name,
99
+ "history",
100
+ self.history,
101
+ )
102
+
103
+ def show_help(self) -> bool:
104
+ for command, description in {
105
+ "help": "show this help.",
106
+ "quit": "quit the chat.",
107
+ }.items():
108
+ logger.info(f"{command}: {description}")
109
+ return True
@@ -1,6 +1,7 @@
1
1
  from blueness import module
2
2
 
3
3
  from blue_assistant import NAME
4
+ from blue_assistant.chat.context import ChatContext
4
5
  from blue_assistant.logger import logger
5
6
 
6
7
 
@@ -11,6 +12,7 @@ def chat(
11
12
  object_name: str,
12
13
  interactive: bool = True,
13
14
  verbose: bool = False,
15
+ load_history: bool = True,
14
16
  ) -> bool:
15
17
  logger.info(
16
18
  "{}.chat -{}> {}".format(
@@ -20,6 +22,15 @@ def chat(
20
22
  )
21
23
  )
22
24
 
23
- logger.info("🪄")
25
+ context = ChatContext(
26
+ object_name,
27
+ load_history=load_history,
28
+ verbose=verbose,
29
+ )
30
+
31
+ if not context.chat(
32
+ interactive=interactive,
33
+ ):
34
+ return False
24
35
 
25
- return True
36
+ return context.save()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: blue_assistant
3
- Version: 4.9.1
3
+ Version: 4.21.1
4
4
  Summary: 🌀 An AI Assistant.
5
5
  Home-page: https://github.com/kamangir/blue-assistant
6
6
  Author: Arash Abadpour (Kamangir)
@@ -15,6 +15,7 @@ License-File: LICENSE
15
15
  Requires-Dist: blueness
16
16
  Requires-Dist: blue-options
17
17
  Requires-Dist: abcli
18
+ Requires-Dist: openai_commands
18
19
  Requires-Dist: boto3
19
20
  Requires-Dist: geojson
20
21
  Requires-Dist: geopandas
@@ -62,4 +63,4 @@ graph LR
62
63
 
63
64
  [![pylint](https://github.com/kamangir/blue-assistant/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/blue-assistant/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/blue-assistant/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/blue-assistant/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/blue-assistant.svg)](https://pypi.org/project/blue-assistant/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/blue-assistant)](https://pypistats.org/packages/blue-assistant)
64
65
 
65
- built by 🌀 [`blue_options-4.205.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`blue_assistant-4.9.1`](https://github.com/kamangir/blue-assistant).
66
+ built by 🌀 [`blue_options-4.207.1`](https://github.com/kamangir/awesome-bash-cli), based on 🌀 [`blue_assistant-4.21.1`](https://github.com/kamangir/blue-assistant).
@@ -1,5 +1,5 @@
1
1
  blue_assistant/README.py,sha256=q6EWCy7zojQESGDF-2xEoXS1Bl0wRJTe2jw_1QM_WYw,600
2
- blue_assistant/__init__.py,sha256=9LsmeDG8swE0pYICUhzxci43g_rP3ypSMITxMD2fNE0,309
2
+ blue_assistant/__init__.py,sha256=1lvcHZ3f-cuu4kggGxsk0tHJqiiPFtcPSSzcpP8kG7Q,310
3
3
  blue_assistant/__main__.py,sha256=URtal70XZc0--3FDTYWcLtnGOqBYjMX9gt-L1k8hDXI,361
4
4
  blue_assistant/config.env,sha256=89ao50sGXYWiU-NMV_fUVXAXdTHKKfWV03BY3_p6EOE,25
5
5
  blue_assistant/env.py,sha256=Luc_ws9lWcgE6u-wjgBL-1WwsL7-kBpiN6bhO5MO96M,177
@@ -13,20 +13,21 @@ blue_assistant/.abcli/actions.sh,sha256=vW1hNMuhjghvqib0775kDzDwqGnqPo3mqLTUkPCd
13
13
  blue_assistant/.abcli/alias.sh,sha256=MCJzXaDnX1QMllWsZJJkDePBYt1nY9ZWa3o4msfGD28,57
14
14
  blue_assistant/.abcli/blue_assistant.sh,sha256=plLTQQerVmfb_SNlOkv0MEaQCF7YdsOHzCq0M3FWT4c,239
15
15
  blue_assistant/.abcli/browse.sh,sha256=qZ_RK_WnsjmF-hfWKiMEOnnv22QtZh9HQ0VFJUbP6aI,294
16
- blue_assistant/.abcli/chat.sh,sha256=1lrDwRrBjR_uhDc7_zeuhxjqgucaZMrrUaqw-o166bs,823
16
+ blue_assistant/.abcli/chat.sh,sha256=8jMqlOm1Pdg-KSb1YSSC2tbW3-1fGwRGpZ6aDITvL2U,828
17
17
  blue_assistant/.abcli/tests/README.sh,sha256=Qs0YUxVB1OZZ70Nqw2kT1LKXeUnC5-XfQRMfqb8Cbwg,152
18
18
  blue_assistant/.abcli/tests/chat.sh,sha256=ptW6aLBp1xB7G4RligZOMnTDtpmdE0LxlkqC236TpCo,272
19
19
  blue_assistant/.abcli/tests/help.sh,sha256=n2FZO78a93YeKSqqZfJoqYDBMHQRWQp2l96zEvl2Ui0,653
20
20
  blue_assistant/.abcli/tests/version.sh,sha256=oR2rvYR8zi-0VDPIdPJsmsmWwYaamT8dmNTqUh3-8Gw,154
21
21
  blue_assistant/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  blue_assistant/chat/__main__.py,sha256=n9fvhhcTHjg33EHvHdFnc2kf8X1yhmOJUahDFs82bW0,870
23
- blue_assistant/chat/functions.py,sha256=QHjrEoYbO95olWrRyOh9njuUwAwYy5NM5VzVNpZF4fM,444
23
+ blue_assistant/chat/context.py,sha256=v1ZQYnK7-eVCRiX9vZt2gTcCwzrClWwvFiMtITpcQSE,2616
24
+ blue_assistant/chat/functions.py,sha256=Al_JUUldshY191Q6rlpVPCExNH5oOFrtkh50419K_0I,714
24
25
  blue_assistant/help/__init__.py,sha256=ajz1GSNU9xYVrFEDSz6Xwg7amWQ_yvW75tQa1ZvRIWc,3
25
26
  blue_assistant/help/__main__.py,sha256=cVejR7OpoWPg0qLbm-PZf5TuJS27x49jzfiyCLyzEns,241
26
27
  blue_assistant/help/chat.py,sha256=fkcT14htkjEt7EOpgvHuUPzj7d8jQDxdgN2ZcU0lVEg,534
27
28
  blue_assistant/help/functions.py,sha256=e1S3oxVKSkLThMMyAsPotaovVFHQbiMN4yRWVZP6TB0,663
28
- blue_assistant-4.9.1.dist-info/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
29
- blue_assistant-4.9.1.dist-info/METADATA,sha256=IH3jq05dUAsaFIByH3z5q56tyqRKx5Dsphx4OoU5s6s,2261
30
- blue_assistant-4.9.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
- blue_assistant-4.9.1.dist-info/top_level.txt,sha256=ud0BkBbdOVze13bNqHuhZj1rwCztaBtDf5ChEYzASOs,15
32
- blue_assistant-4.9.1.dist-info/RECORD,,
29
+ blue_assistant-4.21.1.dist-info/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
30
+ blue_assistant-4.21.1.dist-info/METADATA,sha256=x3wxmN4nVs5JwU-wuHGb42QItMl3lBm1e170Q5iy0Bw,2294
31
+ blue_assistant-4.21.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
32
+ blue_assistant-4.21.1.dist-info/top_level.txt,sha256=ud0BkBbdOVze13bNqHuhZj1rwCztaBtDf5ChEYzASOs,15
33
+ blue_assistant-4.21.1.dist-info/RECORD,,