Skip to content

Commit 2114d73

Browse files
committed
Better handling of the input for sidekick - with command history.
Resolves #18 In this commit, the input prompts in the `aicodebot/cli.py` file have been refactored to use the `prompt_toolkit` library instead of the `click.prompt` function. This change provides a more robust and flexible input prompt system. Additionally, the `prompt-toolkit` library has been added to the project dependencies in the `requirements.in` and `requirements.txt` files.
1 parent 6926ad5 commit 2114d73

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

aicodebot/cli.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from langchain.memory import ConversationTokenBufferMemory
88
from openai.api_resources import engine
99
from pathlib import Path
10+
from prompt_toolkit import prompt as input_prompt
11+
from prompt_toolkit.history import FileHistory
1012
from rich.console import Console
1113
from rich.live import Live
1214
from rich.markdown import Markdown
@@ -207,9 +209,7 @@ def write_config_file(config_data):
207209
if click.confirm("Open the OpenAI API keys page for you in a browser?", default=False):
208210
webbrowser.open(openai_api_key_url)
209211

210-
config_data["openai_api_key"] = click.prompt(
211-
"Please enter your OpenAI API key", default=config_data["openai_api_key"]
212-
)
212+
config_data["openai_api_key"] = input_prompt("Please enter your OpenAI API key")
213213

214214
# Validate the API key
215215
try:
@@ -406,15 +406,14 @@ def sidekick(request, verbose, response_token_size, files):
406406
memory_key="chat_history", input_key="task", llm=llm, max_token_limit=DEFAULT_MAX_TOKENS
407407
)
408408
chain = LLMChain(llm=llm, prompt=prompt, memory=memory, verbose=verbose)
409+
history_file = Path.home() / ".aicodebot_request_history"
409410

410411
while True: # continuous loop for multiple questions
411412
if request:
412413
human_input = request
413414
else:
414-
human_input = click.prompt(
415-
f"Enter a question OR (q) quit, OR (e) to edit using {editor}\n>>>",
416-
prompt_suffix="",
417-
)
415+
console.print(f"Enter a request OR (q) quit, OR (e) to edit using {editor}")
416+
human_input = input_prompt("➤ ", history=FileHistory(history_file))
418417
if len(human_input) == 1:
419418
if human_input.lower() == "q":
420419
break

requirements/requirements.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ GitPython
1111
langchain
1212
loguru
1313
openai
14+
prompt-toolkit
1415
pyyaml
1516
rich
1617
tiktoken

requirements/requirements.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ async-timeout==4.0.2
1515
attrs==23.1.0
1616
# via aiohttp
1717
beautifulsoup4==4.12.2
18-
# via -r requirements/requirements.in
18+
# via -r requirements.in
1919
certifi==2023.5.7
2020
# via requests
2121
charset-normalizer==3.1.0
2222
# via
2323
# aiohttp
2424
# requests
2525
click==8.1.3
26-
# via -r requirements/requirements.in
26+
# via -r requirements.in
2727
dataclasses-json==0.5.8
2828
# via langchain
2929
frozenlist==1.3.3
@@ -33,19 +33,17 @@ frozenlist==1.3.3
3333
gitdb==4.0.10
3434
# via gitpython
3535
gitpython==3.1.31
36-
# via -r requirements/requirements.in
37-
greenlet==2.0.2
38-
# via sqlalchemy
36+
# via -r requirements.in
3937
idna==3.4
4038
# via
4139
# requests
4240
# yarl
4341
langchain==0.0.225
44-
# via -r requirements/requirements.in
42+
# via -r requirements.in
4543
langchainplus-sdk==0.0.20
4644
# via langchain
4745
loguru==0.7.0
48-
# via -r requirements/requirements.in
46+
# via -r requirements.in
4947
markdown-it-py==3.0.0
5048
# via rich
5149
marshmallow==3.19.0
@@ -69,11 +67,13 @@ numpy==1.25.0
6967
# langchain
7068
# numexpr
7169
openai==0.27.8
72-
# via -r requirements/requirements.in
70+
# via -r requirements.in
7371
openapi-schema-pydantic==1.2.4
7472
# via langchain
7573
packaging==23.1
7674
# via marshmallow
75+
prompt-toolkit==3.0.39
76+
# via -r requirements.in
7777
pydantic==1.10.9
7878
# via
7979
# langchain
@@ -83,7 +83,7 @@ pygments==2.15.1
8383
# via rich
8484
pyyaml==6.0
8585
# via
86-
# -r requirements/requirements.in
86+
# -r requirements.in
8787
# langchain
8888
regex==2023.6.3
8989
# via tiktoken
@@ -94,7 +94,7 @@ requests==2.31.0
9494
# openai
9595
# tiktoken
9696
rich==13.4.2
97-
# via -r requirements/requirements.in
97+
# via -r requirements.in
9898
smmap==5.0.0
9999
# via gitdb
100100
soupsieve==2.4.1
@@ -106,7 +106,7 @@ tenacity==8.2.2
106106
# langchain
107107
# langchainplus-sdk
108108
tiktoken==0.4.0
109-
# via -r requirements/requirements.in
109+
# via -r requirements.in
110110
tqdm==4.65.0
111111
# via openai
112112
typing-extensions==4.6.3
@@ -118,5 +118,7 @@ typing-inspect==0.9.0
118118
# via dataclasses-json
119119
urllib3==2.0.3
120120
# via requests
121+
wcwidth==0.2.6
122+
# via prompt-toolkit
121123
yarl==1.9.2
122124
# via aiohttp

0 commit comments

Comments
 (0)