A Python library for text-based AI interactions
[ English 日本語 ]
multiai
は、OpenAI、Anthropic、Google、Perplexity、Mistralのテキスト生成AIモデルとやり取りするためのPythonライブラリおよびコマンドラインツールです。このマニュアルでは、multiai
のインストール、設定、および使用方法について説明します。
multiai
は、以下のプロバイダーのAIモデルとやり取りすることができます。
AIプロバイダー | Webサービス | 使用可能なモデル |
---|---|---|
OpenAI | ChatGPT | GPTモデル |
Anthropic | Claude | Claudeモデル |
Gemini | Geminiモデル | |
Perplexity | Perplexity | Perplexityモデル |
Mistral | Mistral | Mistralモデル |
multiai
をインストールするには、以下のコマンドを使用してください:
pip install multiai
multiai
を使用する前に、選択したAIプロバイダーのAPIキーを設定します。APIキーは環境変数として、またはユーザー設定ファイルで設定できます:
export OPENAI_API_KEY=your_openai_api_key_here
APIキーの設定が完了したら、AIとの対話を開始できます。
簡単な質問を送信するには:
ai こんにちは
以下のような応答が表示されるはずです:
gpt-4o-mini>
こんにちは!今日はどんなことをお手伝いできますか?
インタラクティブセッションを行うには、インタラクティブモードに入ります:
ai
このモードでは、会話を続けることができます:
user> こんにちは
gpt-4o-mini>
こんにちは! 何かお困りですか? 何かお手伝いできることがあれば、遠慮なくお申し付けください。
user> 元気ですか?
gpt-4o-mini>
ありがとう!元気です! あなたはどうですか? 何か楽しいことはありましたか?
user>
インタラクティブモードでは、複数行のテキストを入力するために、設定ファイルの[command]
セクションにあるblank_lines
パラメータを使用して入力完了を制御できます。以下はその仕組みです:
blank_lines = 1
と設定すると、空行(つまりEnterを2回押す)後にのみ入力が完了します。複数行のテキストをコピー&ペーストするときに特に便利です。入力に空行が含まれている場合は、blank_lines
パラメータを適宜増やします。インタラクティブモードを終了するには:
q
、x
、quit
またはexit
を入力。Ctrl-D
でEOFを送信。Ctrl-C
でキーボード割り込みを送信。multiai
は、設定ファイルから設定を読み込みます。設定ファイルの検索順序は次のとおりです:
~/.multiai
./.multiai
後者のファイルからの設定は、前者の設定を上書きします。
以下は設定ファイルの例です:
[system]
[model]
ai_provider = openai
openai = gpt-4o-mini
anthropic = claude-3-haiku-20240307
google = gemini-1.5-flash
perplexity = llama-3.1-sonar-small-128k-chat
mistral = mistral-large-latest
[default]
temperature = 0.7
max_requests = 5
[command]
blank_lines = 0
always_copy = no
always_log = no
log_file = chat-ai-DATE.md
[prompt]
color = blue
english = If the following sentence is English, revise the text to improve its readability and clarity in English. If not, translate into English. No need to explain. Just output the result English text.
factual = Do not hallucinate. Do not make up factual information.
url = Summarize following text very briefly.
[api_key]
openai = (Your OpenAI API key)
anthropic = (Your Claude API key)
google = (Your Gemini API key)
perplexity = (Your Perplexity API key)
mistral = (Your Mistral API key)
デフォルトのAIプロバイダーは、設定ファイルの[model]
セクションで指定されますが、コマンドラインオプションでこれを上書きすることができます:
-o
OpenAI-a
Anthropic-g
Google-p
Perplexity-i
Mistralまた、-m
オプションを使用してモデルを指定することもできます。例えば、OpenAIのgpt-4o
モデルを使用するには:
ai -om gpt-4o
複数のAIプロバイダーオプションが与えられた場合、例えば:
ai -oa
複数のモデルと同時に会話できます。各プロバイダーのデフォルトモデルが使用されます。
APIキーは、環境変数として保存できます:
OPENAI_API_KEY
OpenAI用ANTHROPIC_API_KEY
Anthropic用GOOGLE_API_KEY
Google用PERPLEXITY_API_KEY
Perplexity用MISTRAL_API_KEY
Mistral用環境変数が設定されていない場合、multiai
は設定ファイルの[api_key]
セクションにあるキーを探します。
temperature
やmax_tokens
などのパラメータは、設定ファイルまたはコマンドラインオプションで設定できます:
-t
オプションを使用してtemperature
を設定します。max_tokens
パラメータは省略可能です。応答が不完全な場合、multiai
はmax_requests
で指定された回数に達するまで、追加情報を要求します。
multiai
は、プロンプトを簡素化するために、いくつかのコマンドラインオプションを提供します:
-e
オプション: 英語テキストの修正や翻訳を行う前置プロンプトを追加します。この前置プロンプトは、設定ファイルの[prompt]
セクションにあるenglish
パラメータで定義されます。
使用例:
ai -e This are a test
-f
オプション: 虚偽の情報を防ぐための前置プロンプトを追加します。これは設定ファイルのfactual
パラメータで定義されています。
使用例:
ai -f 土壌物理学について説明して
-u URL
オプション: 指定されたURLの内容を自動的に取得してテキストに変換します。URLが.pdf
で終わる場合、そのPDFファイルの内容もテキストに変換されます。このプログラムは、前置プロンプトに基づいてテキストを要約し、その後、内容に関してインタラクティブモードで質問を受け付けます。要約を母国語で得たい場合は、設定ファイルのurl
パラメータに定義されている前置プロンプトを書き換えます。
使用例:
ai -u https://sekika.github.io/2020/05/11/society50/
長い応答のページング: 応答が端末の1ページを超える場合、multiai
はpypagerを使用して表示します。
クリップボードへのコピー: -c
オプションを使用して、最後の応答をクリップボードにコピーします。always_copy = yes
が[command]
セクションで設定されている場合、このオプションは常に有効です。
使用例:
ai -c "What is the capital of France?"
チャットのログ保存: -l
オプションを使用して、チャットを現在のディレクトリにあるchat-ai-DATE.md
という名前のファイルに保存します。DATE
は今日の日付に置き換えられます。ファイル名は、[command]
セクションのlog_file
キーで変更できます。always_log = yes
が設定されている場合、このオプションは常に有効です。
使用例:
ai -l Tell me a joke
すべてのコマンドラインオプションの一覧を見るには、以下を使用します:
ai -h
より詳細なドキュメントを見るには、このマニュアル(英語版)をウェブブラウザで開くことができます:
ai -d
multiai
の使用multiai
はPythonライブラリとしても使用できます。以下は簡単な例です:
import multiai
# クライアントの初期化
client = multiai.Prompt()
# モデルとtemperatureの設定。省略するとデフォルト設定となる。
client.set_model('openai', 'gpt-4o')
client.temperature = 0.5
# プロンプトを送信して応答を取得
answer = client.ask('hi')
print(answer)
# 文脈を持った会話の継続
answer = client.ask('how are you')
print(answer)
# 会話の文脈をクリア
client.clear()
client.ask
でエラーが発生した場合、エラーメッセージが返され、client.error
がTrue
に設定されます。
以下は、multiai
ライブラリを使用してテキストファイルを翻訳するPythonスクリプトの例です。このコードをenglish.py
として保存してください。
import multiai
import sys
pre_prompt = "Translate the following text into English. Just answer the translated text and nothing else."
file = sys.argv[1]
with open(file) as f:
prompt = f.read()
client = multiai.Prompt()
client.set_model('openai', 'gpt-4o')
answer = client.ask(pre_prompt + '\n\n' + prompt)
print(answer)
たとえば、text.md
という日本語のファイルがあったとします。次のコマンドを実行します。
python english.py text.md
すると、翻訳された英語が表示されます。結果をoutput.md
というファイルに保存するには、リダイレクトを使って
python english.py text.md > output.md
とします。pre_prompt
パラメータを変えることで、色々なスクリプトを作ることができます。
streamlit
を使用してローカルチャットアプリを実行できます。以下のコマンドを実行してstreamlit
をインストールしてください。
pip install streamlit
app.pyをダウンロードして、以下のコマンドでローカルサーバーを起動してください。
streamlit run app.py
サーバーが起動すると、デフォルトのウェブブラウザが開き、チャットアプリケーション(Chotto GPT)が表示されます。このアプリでは、さまざまなプロバイダーからのAIモデルを簡単に選択し、それらと会話を楽しむことができます。利用可能なモデルのリストやログファイルの場所は、ソースコードを直接編集することでカスタマイズできます。
Google Colab で実行するには、このノートブックを使用して下さい。Colab Secrets に API キーを設定する必要があります。