Chat Assistant
Project description
chat-assistant
chat-assistantは、複数の大規模言語モデル(LLM)APIやローカルモデルを柔軟に切り替えて利用できる、Python製のチャットアシスタント用パッケージです。
キャッシュ機能や自動モデル切替、非同期処理に対応し、研究・開発・業務自動化など幅広い用途で活用できます。
特徴
-
柔軟なチャットアシスタント機能(OpenAI, Gemini, Anthropic, Cohere, HuggingFace, XAI, ローカルモデル等に対応)
-
モデルAPIキーの自動検出・利用可能モデルの自動選択
-
非同期対応のキャッシュにって、リクエストとAIのレスポンスをキャッシュし、全く同じリクエストを受けた時にキャッシュから高速に応答
-
Python 3.10以上対応
-
非同期(async/await)での利用
-
シンプルなAPI
-
LLM の API エラー時に自動リトライおよび、リトライしてもエラーだった場合は、利用可能な LLM の API への自動切換え
-
litellm ベース
-
litellm がサポートしていない lambda モデルに対応
インストール
pip install chat-assistant
使い方
基本的な使い方
import asyncio
from chat_assistant import ChatAssistant
async def main():
async with ChatAssistant() as assistant:
result = await assistant.chat(message="こんにちは!")
print(result)
asyncio.run(main())
モデルの指定やカスタマイズ
from chat_assistant import ChatAssistant, ModelManager
model_manager = ModelManager(models=["openai/gpt-4.1",
"openai/gpt-4o",
"anthropic/claude-3-7-sonnet-latest",
"anthropic/claude-3-5-sonnet-latest",
"lambda/deepseek-r1-671b"])
assistant = ChatAssistant(model_manager=model_manager, temperature=1.0)
model_manager.change_model("claude-3-7")
-
models に複数のモデルを定義する事で、API障害発生時に自動的に切り替えて、障害に備えます。
-
model_manager.change_model() で、任意のモデルに切り替えます。
会話履歴(chat_log)を渡す
文字列リスト形式
logs = [
"「いっぱい」の「い」を「お」に置き換えるとどうなりますか?", # user
"「おっぱい」になります。", # assistant
"それは誤りです。正確には「おっぱお」となります。", # user
"大変申し訳ありません。正確には「おっぱい」となります。", # assistant
]
result = await assistant.chat(message="いっぱいのいをおに置き換えるとどうなりますか?", chat_log=logs)
print(result)
-
文字列のリストを chat_log に渡すと、その文字列をユーザーとアシスタントの間で交互の会話ログとして記録します。
-
ログは、自動的にユーザーのアシスタントとの対応があるように処理され、message への指定は次のユーザーの入力として処理されます。
辞書リスト形式
logs = [
{"content": "「いっぱい」の「い」を「お」に置き換えるとどうなりますか?", "role": "user"},
{"content": "「おっぱい」になります。", "role": "assistant"},
{"content": "それは誤りです。正確には「おっぱお」となります。", "role": "user"},
{"content": "大変申し訳ありません。正確には「おっぱい」となります。", "role": "assistant"},
]
result = await assistant.chat(message="いっぱいのいをおに置き換えるとどうなりますか?", chat_log=logs)
print(result)
- chat_log に辞書リストを渡すと、その辞書リストをユーザーとアシスタントの間でログとして参照します。
main関数のサンプル
chat_assistant/__init__.py の main() も参考にしてください。
必要なAPIキー・環境変数
利用するモデルに応じて、以下の環境変数(.env ファイル)を作成してください(未設定の場合は該当モデルは自動的に除外されます)。
-
OPENAI_API_KEY -
ANTHROPIC_API_KEY -
COHERE_API_KEY -
GEMINI_API_KEY -
XAI_API_KEY -
HUGGINGFACE_API_KEY -
DEEPSEEK_API_KEY -
LAMBDA_API_KEY(lambdaモデル利用時)
ローカルモデル(例: LM Studio)を利用する場合は、APIサーバーを起動しておいてください。
依存パッケージ
-
litellm
-
skpmem
-
json_repair
requirements.txt を参照してください。
ライセンス
本プロジェクトはMITライセンスの下で公開されています。
リンク
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chat_assistant-0.1.8.tar.gz.
File metadata
- Download URL: chat_assistant-0.1.8.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58f64d356f917f118a9fa90bbd3cfd5985ce2068ead349e6eab5dde0c46a123e
|
|
| MD5 |
05bf9884cd68f10707f8fac15196fc70
|
|
| BLAKE2b-256 |
b801aa4b76d691fd6216e263e812d742dc48facdce745179991e792d9977c1b5
|
File details
Details for the file chat_assistant-0.1.8-py3-none-any.whl.
File metadata
- Download URL: chat_assistant-0.1.8-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01652ea483fd09d54f4bf0e6a1e9b5fd9bee513cd46a18601ad28b9cd545e022
|
|
| MD5 |
bb1c272288d507379f9849605bb43a82
|
|
| BLAKE2b-256 |
a60a9538ae236ae5f111bd9651431d247b43a02356cb66849891eaf76da1d1ae
|