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ライセンスの下で公開されています。
リンク
Metadata
Release files for chat-assistant 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chat_assistant-0.2.0.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chat_assistant-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.1 kB
Release files / chat_assistant-0.2.0.tar.gz
| Download URL | chat_assistant-0.2.0.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b2e1535a41fd791f43805507ec622b77be341b639faafbec53b5e3dc6841a879
|
|
BLAKE2b-256 checksum How to use checksums |
9824a935f77f47dba40f75b4dafb5db4ea7e1d116dd47d1190e88b80620f1966
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.11
|
Release files / chat_assistant-0.2.0-py3-none-any.whl
| Download URL | chat_assistant-0.2.0-py3-none-any.whl |
|---|---|
| Size | 11.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c69a08791760e01cb2ef0884ec600c23f420382931f45e544bf52fd7a0819c8
|
|
BLAKE2b-256 checksum How to use checksums |
de809b5bac4d403f7b509d2d733a6aed208b73046d4b22f3226d937c3de94f7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.11
|