この概念実証の目的は、ユーザーが Alkemio 関連のトピックに参加できる、多用途で信頼性が高く直感的なチャットボットを作成するために何が必要かを評価することです。このプロジェクトはそのままでは展開できませんが、生成 AI 機能を示すための貴重な入力として機能し、この機能をプラットフォームに組み込むために何が必要かを評価するのに役立ちます。
大規模言語モデル (LLM) は、ここ数年間で大幅に改善されましたが、遍在性やパフォーマンスが優れているわけではありません。これにより、さまざまな分野での使用に多くの可能性が開かれます。 OpenAI は LLM の商用プロバイダとして最もよく知られていますが、商用またはオープンソースの LLM モデルには豊富な選択肢があります。これによりオプションが提供される一方で、プロバイダーのロックインのリスクも生じます。
LLM は、生成 AI ソリューションを実際に実装するために必要なコンポーネントの 1 つにすぎず、他の多くの「構成要素」も必要です。 Langchain は、これらの構成要素を提供し、抽象化レイヤーを作成してプロバイダーの独立性を実現する人気のオープン ソース ライブラリです。
LLM のトレーニングはほとんどの組織にとって法外な費用がかかりますが、ほとんどの実際的な実装では組織固有のデータを組み込む必要があります。一般的なアプローチは、LLM に送信されるプロンプトに対するユーザーの質問に特定のコンテキストを追加することです。 LLM は通常、有限サイズ (通常約 4,000 トークン) のプロンプトのみを許可するため、これには課題が生じます。したがって、関連するコンテキスト情報が提供されることが重要であり、そのために次のことを行う必要があります。
このプロジェクトは多くの記事からインスピレーションを受けていますが、理論的かつ実践的なものです。コードベースの重要な部分は、Building an AWS Well-Architected Chatbot with LangChain プロジェクトから来ています。
プロジェクトは、RabbitMQ RPC を使用したコンテナベースのマイクロサービスとして実装されています。 RabbitMQ キューが 1 つあります。
alkemio-virtual-contributor-engine-guidance
- マイクロサービスにリクエストを送信するためのキューリクエスト ペイロードは、次の構造の json で構成されます (クエリの例)。
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
操作の種類は次のとおりです。
ingest
: Alkemio Foundation Web サイトから (Github ソース経由で) データを収集し、OpenAI Ada テキスト モデルを使用して埋め込みます。追加リクエスト データはありません。reset
: 進行中のチャットのチャット履歴をリセットします。 userId が必要です。query
: チャット シーケンスで次の質問を投稿します。例を参照してください。応答は、自動生成された排他的な名前のないキューに公開されます。
モデルの対話言語にはドラフト実装があります (大幅な改善が必要です)。言語コードが指定されていない場合は、英語が想定されます。選択肢は次のとおりです: 「EN」: 「英語」、「US」: 「英語」、「UK」: 「英語」、「FR」: 「フランス語」、「DE」: 「ドイツ語」、「ES」: 「スペイン語」 、「NL」: 「オランダ語」、「BG」: 「ブルガリア語」、「UA」: 「ウクライナ語」
*注意: https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api で以前の (古い) RESTful 実装が利用可能です。
次のコマンドを使用して、Docker CLI からコンテナーをビルドできます (デフォルトのアーキテクチャは amd64 なので、amd64 ビルドの場合は--build-arg ARCHITECTURE=arm64
です): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile には、一目瞭然の構成引数がいくつかあります。
次のコマンドを使用して、Docker CLI からコンテナーを起動できます: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
where .env
based on .azure-template.env
あるいは、 docker-compose up -d
を使用します。
と:
AZURE_OPENAI_API_KEY
: 有効な OpenAI API キーOPENAI_API_VERSION
: 有効な Azure OpenAI バージョン。この記事の執筆時点では、最新は2023-05-15
です。AZURE_OPENAI_ENDPOINT
: 有効な Azure OpenAI ベース URL (例: https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: RabbitMQ ホスト名RABBITMQ_USER
: RabbitMQ ユーザーRABBITMQ_PASSWORD
: RabbitMQ のパスワードAI_MODEL_TEMPERATURE
: モデルのtemperature
。0 から 1 までの値を使用します。1 はよりランダムな回答を意味し、0 に近いほど厳密になります。LLM_DEPLOYMENT_NAME
: Azure の AI gpt モデル デプロイ名EMBEDDINGS_DEPLOYMENT_NAME
: Azure での AI 埋め込みモデルのデプロイ名AI_SOURCE_WEBSITE
: ソース データを含む財団 Web サイトの URL (参照のみ)AI_SOURCE_WEBSITE2
: ソース データを含むウェルカム Web サイトの URL (参照のみ)AI_LOCAL_PATH
: データを保存するためのローカル ファイル パスAI_WEBSITE_REPO
: Hugo に基づく、財団 Web サイトのソース データを含む Git リポジトリの URL (https なし)AI_WEBSITE_REPO2
: Hugo に基づくウェルカム Web サイトのソース データを含む Git リポジトリの URL (https なし)AI_GITHUB_USER
: Web サイト リポジトリのクローン作成に使用される Github ユーザーAI_GITHUB_PAT
: Web サイト リポジトリを複製するための個人アクセス トークンLANGCHAIN_TRACING_V2
: ラングチェーン トレースを有効にするLANGCHAIN_ENDPOINT
: Langchain トレース エンドポイント (例: "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: Langchain トレース API キーLANGCHAIN_PROJECT
: Langchain トレース プロジェクト名 (例: "virtual-contributor-engine-guidance")サンプル値は.azure-template.env
にあります。これらを構成し、更新された設定で.env
ファイルを作成します。
プロジェクトには Python と Poetry がインストールされている必要があります。最小バージョンの依存関係はpyproject.toml
にあります。 Python & Poetry をインストールした後:
poetry install
poetry run python virtual_contributor_engine_guidance.py
を使用して実行しますこのプロジェクトには少なくとも Python 3.11 が必要で、Web サイトのローカル バージョンを作成するには Go と Hugo がインストールされている必要があります。インストール手順については、Go および Hugo のドキュメントを参照してください (コンテナ外で実行する場合のみ)
次のタスクがまだ未解決です。