🧠
ターミナル で使える対話的な ChatAI CLI
プログラマなら https://chat.openai.com の WebUI より、すでに手元にあるターミナルで AI と会話したいですよね。
自分が欲しい機能
- ストリームで出力
- 対話コンテキストを保存
- 複数プラットフォームからモデルを選択
- OpenAI
- AnthropicAI
- CloudflareAI
- そのままだと複数行の入力が難しいので、
--edit
でvscode を開いて編集 - いくつかのシステムプロンプトを用意しておいて、対話コンテキスト生成時に選択
作った
というわけで、deno で試作しました。
デフォルトだと chat で入るのですが、 --name の部分で調整できます。
# install deno on mac
# curl -fsSL https://deno.land/x/install/install.sh | sh
$ deno install -AF https://deno.land/x/previs@v0.1.7/chat/chat.ts --name chat
✅ Successfully installed chat
$ chat -h
Usage:
$ chat [cmd] [...options] [message]
$ chat "hello" # chat with message
$ chat -e # edit message with vscode
COMMANDS:
$ chat history [context] # Show chat history
$ chat system new <system-name> # system with vscode
$ chat context [context] # Show context or switch
$ chat model # Switch model
$ chat alias [context] # Create alias
$ chat delete [context] # Delete context
$ chat reset # Reset context
Options:
--edit: Edit file
--debug: Debug mode
--help: Show help
--prompt: Prompt file path
--file: from file path
--template: Template file path
使い方
使うモデルに応じてAPI_KEY を環境変数をセットしてください。
$ export OPENAI_API_KEY ...
$ export ANTHROPIC_API_KEY ...
$ export CF_API_TOKEN ...
$ export CF_ACCOUNT_ID...
最初に起動するとモデル、システムプロンプトを選択します。
$ chat "Hello"
[chat] iqdh1tsqyg(2)[model: claude-3-opus-20240229][system: default]
Hello! Is there something specific I can help you with today? Feel free to ask me anything.
$ chat --edit
# vscode でファイルが開くので、編集して保存すると送信される
# 会話コンテキストをリセットする
$ chat reset
システムプロンプトの追加
~/.promptsn/templates/my-template.md
を追加すると、システムプロンプトを追加します。
$ chat reset
[chat] greeting(0)[model: claude-3-opus-20240229][system: default]
Select model
openai : gpt-4
openai : gpt-4-turbo
> anthropic : claude-3-opus-20240229
anthropic : claude-3-sonnet-20240229
anthropic : claude-3-haiku-20240307
cloudflare : @cf/meta/llama-2-7b-chat-int8
cloudflare : @cf/meta/llama-2-7b-chat-fp16
もちろん環境に応じたAPI_KEYが必要になります。
おわり
こういうの、無限に作られているとは思うんですが結局今は自分がほしいのものを自作するしかない気がしてます。
Discussion