Skip to main content

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__.pymain() も参考にしてください。

必要な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

chat_assistant-0.1.9.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chat_assistant-0.1.9-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file chat_assistant-0.1.9.tar.gz.

File metadata

  • Download URL: chat_assistant-0.1.9.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for chat_assistant-0.1.9.tar.gz
Algorithm Hash digest
SHA256 5fae2ef3e8ca0aacc11609a44c0a9c24b9566b2dd9935382e2c9981f3716d62e
MD5 d6ee6ca3e274c74621edbbf3204340d7
BLAKE2b-256 db2cecc7e5e44f98890da311be169fa54448ea51e8cae90ccec0ba3462053727

See more details on using hashes here.

File details

Details for the file chat_assistant-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: chat_assistant-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for chat_assistant-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 67c87fc63fbdad13fabd82bc946b3a574a01e86570a1734d9ab46316db7db499
MD5 dea95e89dd4e79143faae283c6d9c5c7
BLAKE2b-256 b1c03723337733b8528e358fd6060ca3e91251758d165baa86521964e8dca83b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page