A Python library for text-based AI interactions with multi-provider support
[ English 日本語 ]
multiaiは、OpenAI、Anthropic、Google、Perplexity、Mistral、DeepSeek、xAIのテキスト生成AIモデルとやり取りするためのPythonライブラリおよびコマンドラインツールです。このマニュアルでは、multiaiのインストール、設定、および使用方法について説明します。
multiaiは、以下のプロバイダーのAIモデルとやり取りすることができます。
| AIプロバイダー | Webサービス | 使用可能なモデル |
|---|---|---|
| OpenAI | ChatGPT | GPTモデル |
| Anthropic | Claude | Claudeモデル |
| Gemini | Geminiモデル | |
| Perplexity | Perplexity | Perplexityモデル |
| Mistral | Mistral | Mistralモデル |
| DeepSeek | DeepSeek | DeepSeekモデル |
| xAI | xAI | xAIモデル |
| Local LLM | Ollama | Ollamaモデル |
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-5
anthropic = claude-sonnet-4-5
google = gemini-2.5-flash
perplexity = sonar
mistral = mistral-large-latest
deepseek = deepseek-chat
xai = grok-4-latest
local = gpt-oss:20b
[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.
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)
deepseek = (Your DeepSeek API key)
xai = (Your xAI API key)
デフォルトのAIプロバイダーは、設定ファイルの[model]セクションで指定されますが、コマンドラインオプションでこれを上書きすることができます:
-o OpenAI-a Anthropic-g Google-p Perplexity-i Mistral-d DeepSeek-x for xAI-l local LLMまた、-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用DEEPSEEK_API_KEY DeepSeek用XAI_API_KEY xAI用環境変数が設定されていない場合、multiaiは設定ファイルの[api_key]セクションにあるキーを探します。
ローカルLLMを使用するには、以下の手順に従ってください:
ollama serveを実行して、Ollamaを起動します。ollama pull llama3.3ai -lm llama3.3を実行して、multiai セッションを開始します。temperatureやmax_tokensなどのパラメータは、設定ファイルまたはコマンドラインオプションで設定できます:
-tオプションを使用してtemperatureを設定します。max_tokensパラメータは省略可能です。応答が不完全な場合、multiaiはmax_requestsで指定された回数に達するまで、追加情報を要求します。
multiaiは、プロンプトを簡素化するために、いくつかのコマンドラインオプションを提供します:
-eオプション: 英語テキストの修正や翻訳を行う前置プロンプトを追加します。この前置プロンプトは、設定ファイルの[prompt]セクションにあるenglishパラメータで定義されます。
使用例:
ai -e This are a test
-f FILE [FILE ...]オプション(1.4.0で追加): 1つ以上のファイルを文脈として添付します。特別な処理に対応している形式は txt, md, pdf, docx, html/htm, csv です。未知の拡張子でも、内容が有効な UTF-8 テキスト(NULバイトを含まない)として読み取れる場合は受け付けます。読み取れない場合は未対応として拒否されます。
--attach-limit N(1.4.0で追加): 添付1件あたりの文字数上限。超過した場合は自動要約され、超過を知らせるメッセージが表示されます。ai -f notes.md)は、最初の1回だけ添付が適用され、その後はインタラクティブモードに入ります。ai "これらの資料を要約してください" -f a.pdf b.docx --attach-limit 50000
ai -f notes.md
-u URLオプション: 指定されたURLの内容を自動的に取得してテキストに変換します。URLが.pdfで終わる場合、そのPDFファイルの内容もテキストに変換されます。このプログラムは、前置プロンプトに基づいてテキストを要約し、その後、内容に関してインタラクティブモードで質問を受け付けます。要約を母国語で得たい場合は、設定ファイルのurlパラメータに定義されている前置プロンプトを書き換えます。
使用例:
ai -u https://sekika.github.io/2020/05/11/society50/
注意:
-f/--factual オプションは削除されました。事実性を重視した前置プロンプトが必要な場合は、プロンプト本文や設定に手動で含めてください。長い応答のページング: 応答が端末の1ページを超える場合、multiaiはpypagerを使用して表示します。
クリップボードへのコピー: -cオプションを使用して、最後の応答をクリップボードにコピーします。always_copy = yesが[command]セクションで設定されている場合、このオプションは常に有効です。
使用例:
ai -c "What is the capital of France?"
チャットのログ保存: -sオプションを使用して、チャットを現在のディレクトリにあるchat-ai-DATE.mdという名前のファイルに保存します。DATEは今日の日付に置き換えられます。ファイル名は、[command]セクションのlog_fileキーで変更できます。always_log = yesが設定されている場合、このオプションは常に有効です。
使用例:
ai -s Tell me a joke
すべてのコマンドラインオプションの一覧を見るには、以下を使用します:
ai -h
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 キーを設定する必要があります。