diff options
Diffstat (limited to 'py/utils.py')
| -rw-r--r-- | py/utils.py | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/py/utils.py b/py/utils.py index 02ecfef..68a4ee9 100644 --- a/py/utils.py +++ b/py/utils.py @@ -11,8 +11,11 @@ def load_api_key(): pass return api_key.strip() +def make_options(): + return vim.eval("options") + def make_request_options(): - options = vim.eval("options") + options = make_options() request_options = {} request_options['model'] = options['model'] request_options['max_tokens'] = int(options['max_tokens']) @@ -20,3 +23,35 @@ def make_request_options(): request_options['request_timeout'] = float(options['request_timeout']) return request_options +def render_text_chunks(chunks): + generating_text = False + for text in chunks: + if not text.strip() and not generating_text: + continue # trim newlines from the beginning + generating_text = True + vim.command("normal! a" + text) + vim.command("redraw") + +def parse_chat_messages(chat_content): + lines = chat_content.splitlines() + messages = [] + for line in lines: + if line.startswith(">>> system"): + messages.append({"role": "system", "content": ""}) + continue + if line.startswith(">>> user"): + messages.append({"role": "user", "content": ""}) + continue + if line.startswith("<<< assistant"): + messages.append({"role": "assistant", "content": ""}) + continue + if not messages: + continue + messages[-1]["content"] += "\n" + line + + for message in messages: + # strip newlines from the content as it causes empty responses + message["content"] = message["content"].strip() + + return messages + |