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.2.0.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.2.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chat_assistant-0.2.0.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.2.0.tar.gz
Algorithm Hash digest
SHA256 b2e1535a41fd791f43805507ec622b77be341b639faafbec53b5e3dc6841a879
MD5 efd93b85f23248b8693f3471399f52b4
BLAKE2b-256 9824a935f77f47dba40f75b4dafb5db4ea7e1d116dd47d1190e88b80620f1966

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chat_assistant-0.2.0-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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8c69a08791760e01cb2ef0884ec600c23f420382931f45e544bf52fd7a0819c8
MD5 df58293a16a7f825bf82288adee7c1b2
BLAKE2b-256 de809b5bac4d403f7b509d2d733a6aed208b73046d4b22f3226d937c3de94f7a

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