Skip to main content

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)

Source distribution for chat-assistant 0.2.0
File Size Uploaded
chat_assistant-0.2.0.tar.gz 13.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chat-assistant 0.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page