このリポジトリには、ユーザーや顧客が必要な情報を取得したり、複雑なタスクを実行したりするのに役立つ複数の Alfresco AI アシスタントが含まれており、それぞれのリクエストを自然言語で簡単に伝えることができます。
デモで何が起こっているかの「舞台裏」の説明については、behind_the_scenes.md を参照してください。
このリポジトリには次のアプリケーションが含まれています。
名前 | メインファイル | 作成名 | URL | 説明 |
---|---|---|---|---|
Alfresco ドキュメント ボット | alfresco_docs_bot.py | alfresco_docs_bot | http://ローカルホスト:8503 | Alfresco のドキュメントを取り込んで質問してください。 |
屋外 AI アシスタント | alfresco_ai_assistant.py | alfresco_ai_assistant | http://ローカルホスト:8504 | 自然言語リクエストを使用して Alfresco Content Services インスタンスと対話します。 |
データベースは http://localhost:7474 で参照できます。
グラフTB
ユーザー(ユーザー?)
llm(LLM?)
Vectordb[(ベクターデータベース)]
raw-docs{{生のドキュメント }}
ユーザー --クエリ埋め込みデータ--> Vectordb
Vectordb --関連データ--> llm
llm --最終回答--> ユーザー
raw-docs --抽出/チャンク化/埋め込み---> Vectordb
アクセス:
特徴:
グラフBT
ユーザー(ユーザー?)
llm(LLM?)
API
サブグラフ API[API ?]
ディスカバリー API
検索API
ノードAPI
終わり
サブグラフツール[ツール]
発見
変身
編集する
終わり
ユーザー --クエリ --> llm
llm --choose--> ツール
ツール --invoke--> API
API --フィードデータ--> llm
llm --最終回答--> ユーザー
アクセス:
特徴:
環境テンプレート ファイルenv.example
から.env
ファイルを作成します。
利用可能な変数:
変数名 | デフォルト値 | 説明 |
---|---|---|
ALFRESCO_URL | http://ローカルホスト:8080 | 必須 - ACS インスタンスのベース URL |
ALFRESCO_USERNAME | 管理者 | 必須 - ACS インスタンスのユーザー名 |
ALFRESCO_PASSWORD | 管理者 | 必須 - ACS インスタンスのパスワード |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | 必須 - Ollama LLM API への URL |
NEO4J_URI | neo4j://データベース:7687 | 必須 - Neo4j データベースへの URL |
NEO4J_USERNAME | neo4j | 必須 - Neo4j データベースのユーザー名 |
NEO4J_パスワード | パスワード | 必須 - Neo4j データベースのパスワード |
LLM | ラマ3 | 必須 - 任意の Ollama モデル タグ、gpt-4、gpt-3.5、または claudev2 を指定できます。 |
EMBEDDING_MODEL | センテンス_トランスフォーマー | 必須 - text_transformer、openai、aws、ollama、または google-genai-embedding-001 のいずれかにすることができます |
AWS_ACCESS_KEY_ID | 必須 - LLM=claudev2 または embedding_model=aws の場合のみ | |
AWS_SECRET_ACCESS_KEY | 必須 - LLM=claudev2 または embedding_model=aws の場合のみ | |
AWS_DEFAULT_REGION | 必須 - LLM=claudev2 または embedding_model=aws の場合のみ | |
OPENAI_API_KEY | 必須 - LLM=gpt-4 または LLM=gpt-3.5 または embedding_model=openai の場合のみ | |
GOOGLE_API_KEY | 必須 - GoogleGenai LLM または埋め込みモデル google-genai-embedding-001 を使用する場合にのみ必要です | |
LANGCHAIN_ENDPOINT | 「https://api.smith.langchain.com」 | オプション - Langchain Smith API への URL |
LANGCHAIN_TRACING_V2 | 間違い | オプション - Langchain トレース v2 を有効にする |
LANGCHAIN_PROJECT | オプション - ラングチェーンプロジェクト名 | |
LANGCHAIN_API_KEY | オプション - ラングチェーン API キー |
警告
アプリケーションは Ollama、特に llama3 でのみテストされており、他の LLM での動作は保証されていません。
Ollama を手動でインストールする必要はありません。Linux プロファイルで実行すると、スタックの一部としてコンテナーで実行されます。 docker compose --profile linux up
を実行します。 Ollama Docker コンテナを使用する場合は、 .env
ファイルにOLLAMA_BASE_URL=http://llm:11434
を設定してください。
Linux-GPU プロファイルを使用するには、 docker compose --profile linux-gpu up
を実行します。 .env
ファイル内のOLLAMA_BASE_URL=http://llm-gpu:11434
も変更します。
何らかの理由で Ollama コンテナを実行できない場合は、代替オプションとして Ollama コンテナをインストールしてローカルで実行できます。
安価な GPU または CPU で実行している場合は、commons.py の
num_ctx
3072
に減らすとよいでしょう。
Ollama をローカルで実行すると、結果が遅くなる可能性があります。考えられる解決策は、コンシューマ グレードの GPU よりも優れたパフォーマンスを発揮する、安価な GPU 対応の EC2 インスタンスで実行することです。
単一のg4dn.xlarge
インスタンスを基盤とする EKS クラスターを作成するには:
eksctl create cluster --name hack-turing-titans --node-type=g4dn.xlarge --nodes 1
https 経由で ollam を公開するには、ingress-nginx と cert-manager をインストールします。
helm upgrade --install ingress-nginx ingress-nginx
--repo https://kubernetes.github.io/ingress-nginx
--namespace ingress-nginx --create-namespace
helm install
cert-manager jetstack/cert-manager
--namespace cert-manager
--create-namespace
--set installCRDs=true
ingress-nginx 入力 CNAME を指す DNS レコードを手動で作成します ( kubectl get service -n ingress-nginx
を介して取得します)。
FQDN を設定し、ClusterIssuer リソースを適用して LetsEncrypt 証明書の生成を有効にします。
sed -i ' s/my-ollama.example.com/YOUR_FQDN/g ' k8s/letsencrypt-prod.yaml
kubectl apply -f k8s/letsencrypt-prod.yaml
最後に Ollama チャートをインストールします。
helm install ollama ollama-helm/ollama
--namespace ollama
--create-namespace
--values ollama.yaml
警告
Docker Desktop の4.24.x
リリースには、Python アプリケーションに影響するパフォーマンスの問題があります。このスタックを使用する前に、最新リリースにアップグレードしてください。
すべてを始めるには
docker compose up
ビルド スクリプトに変更が加えられた場合は、再ビルドします。
docker compose up --build
監視モード(ファイル変更時の自動再構築) に入るには。まずすべてを開始してから、新しいターミナルで次のようにします。
docker compose watch
シャットダウンヘルスチェックが失敗した場合、またはコンテナーが期待どおりに起動しない場合は、完全にシャットダウンして再起動します。
docker compose down
アプリケーションが正しく実行されるようにデータを準備するために必要なスクリプトはすべて ./scripts にあります。
transformer.py は、Alfresco Docs ボットに必要なすべてのドキュメントを含むinitial-load
フォルダーを作成するために、docs-alfresco リポジトリのローカル クローンに対して実行する必要があるスクリプトです。
このプロジェクトは docker/genai-stack に基づいており、 Turing Titansチームによるハイランドでの 3 日間の社内ハッカソンの成果です。