チャットボットの設定
サンプル小売アプリケーションには、お客様が自然言語を使用して店舗とやり取りできる組み込みのチャットインターフェースが含まれています。この機能は、お客様が商品を見つけたり、おすすめを受け取ったり、店舗ポリシーについての質問に答えたりするのに役立ちます。このモジュールでは、このチャットコンポーネントを設定して、vLLMを通じて提供されるMistral-7Bモデルを使用します。
UIコンポーネントを再設定して、チャットボット機能を有効にし、vLLMエンドポイントを指すようにしましょう:
- Kustomize Patch
- Deployment/ui
- Diff
~/environment/eks-workshop/modules/aiml/chatbot/deployment/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../../base-application/ui
patches:
- path: deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/created-by: eks-workshop
app.kubernetes.io/type: app
name: ui
namespace: ui
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/component: service
app.kubernetes.io/instance: ui
app.kubernetes.io/name: ui
template:
metadata:
annotations:
prometheus.io/path: /actuator/prometheus
prometheus.io/port: "8080"
prometheus.io/scrape: "true"
labels:
app.kubernetes.io/component: service
app.kubernetes.io/created-by: eks-workshop
app.kubernetes.io/instance: ui
app.kubernetes.io/name: ui
spec:
containers:
- env:
- name: RETAIL_UI_CHAT_ENABLED
value: "true"
- name: RETAIL_UI_CHAT_PROVIDER
value: openai
- name: RETAIL_UI_CHAT_MODEL
value: /models/mistral-7b-v0.3
- name: RETAIL_UI_CHAT_OPENAI_BASE_URL
value: http://mistral.vllm:8080
- name: JAVA_OPTS
value: -XX:MaxRAMPercentage=75.0 -Djava.security.egd=file:/dev/urandom
- name: METADATA_KUBERNETES_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: METADATA_KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: METADATA_KUBERNETES_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
envFrom:
- configMapRef:
name: ui
image: public.ecr.aws/aws-containers/retail-store-sample-ui:1.2.1
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 45
periodSeconds: 20
name: ui
ports:
- containerPort: 8080
name: http
protocol: TCP
resources:
limits:
memory: 1.5Gi
requests:
cpu: 250m
memory: 1.5Gi
securityContext:
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
volumeMounts:
- mountPath: /tmp
name: tmp-volume
securityContext:
fsGroup: 1000
serviceAccountName: ui
volumes:
- emptyDir:
medium: Memory
name: tmp-volume
app.kubernetes.io/name: ui
spec:
containers:
- env:
+ - name: RETAIL_UI_CHAT_ENABLED
+ value: "true"
+ - name: RETAIL_UI_CHAT_PROVIDER
+ value: openai
+ - name: RETAIL_UI_CHAT_MODEL
+ value: /models/mistral-7b-v0.3
+ - name: RETAIL_UI_CHAT_OPENAI_BASE_URL
+ value: http://mistral.vllm:8080
- name: JAVA_OPTS
value: -XX:MaxRAMPercentage=75.0 -Djava.security.egd=file:/dev/urandom
- name: METADATA_KUBERNETES_POD_NAME
valueFrom:
この設定では、次の重要な変更が行われます:
- UIインターフェースでチャットボットコンポーネントを有効にします
- アプリケーションがvLLMのOpenAI互換APIで動作するOpenAIモデルプロバイダーを使用するよう設定します
- OpenAIエンドポイント形式で必要な適切なモデル名を指定します
- エンドポイントURLを
http://mistral.vllm:8080に設定し、vLLM DeploymentのKubernetes Serviceに接続します
これらの変更を実行中のアプリケーションに適用しましょう:
~$kubectl apply -k ~/environment/eks-workshop/modules/aiml/chatbot/deployment
namespace/ui unchanged
serviceaccount/ui unchanged
configmap/ui unchanged
service/ui unchanged
deployment.apps/ui configured
~$kubectl rollout status --timeout=130s deployment/ui -n ui
これらの変更を適用することで、UIにローカルにデプロイされた言語モデルに接続するチャットインターフェースが表示されるようになります。次のセクションでは、この設定をテストして、AI駆動のチャットボットを実際に動作させてみましょう。
注記
UIはvLLMエンドポイントを使用するように設定されましたが、モデルがリクエストに応答できるようになるには完全に読み込まれる必要があります。テスト時に遅延やエラーが発生した場合は、モデルがまだ初期化中である可能性があります。