Alibaba Cloud Service Mesh (ASM) memungkinkan akses ke layanan LLM eksternal melalui gateway ingress ASM, menawarkan fitur seperti pemisahan lalu lintas, observabilitas permintaan, serta otentikasi dan otorisasi menyeluruh. Topik ini menjelaskan cara klien eksternal terhubung ke layanan LLM melalui gateway ingress ASM.
Ikhtisar
Gateway ingress ASM memfasilitasi akses ke layanan LLM eksternal, ideal untuk skenario yang melibatkan koneksi klien eksternal. Gateway ASM menyediakan fitur perutean tingkat lanjut, keamanan, observabilitas, dan manajemen lalu lintas LLM, sehingga memungkinkan akses yang efisien dan aman ke layanan LLM eksternal.
Jejak permintaan adalah sebagai berikut:
Prasyarat
Tambahkan kluster ke instance ASM versi 1.22 atau lebih baru.
Buat gateway ingress dan dapatkan IP gateway.
Alibaba Cloud Model Studio diaktifkan dan Kunci API yang valid diperoleh. Untuk informasi lebih lanjut, lihat Dapatkan Kunci API.
Langkah 1: Buat LLMProvider
Buat file bernama LLMProvider.yaml dengan konten berikut.
apiVersion: istio.alibabacloud.com/v1beta1 kind: LLMProvider metadata: name: dashscope-qwen namespace: istio-system spec: workloadSelector: labels: istio: ingressgateway host: dashscope.aliyuncs.com path: /compatible-mode/v1/chat/completions configs: defaultConfig: openAIConfig: model: qwen1.5-72b-chat # Qwen LLM sumber terbuka stream: false apiKey: ${API_KEY}Jalankan perintah berikut untuk membuat LLMProvider menggunakan file kubeconfig kluster pada bidang data.
kubectl apply -f LLMProvider.yaml
Langkah 2: Buat aturan gateway
Buat file bernama ingress-gw.yaml dengan konten berikut.
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: ingress-gw namespace: istio-system spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTPJalankan perintah berikut untuk membuat aturan gateway.
kubectl apply -f ingress-gw.yaml
Langkah 3: Buat LLMRoute
Buat file bernama dashscope-route.yaml dengan konten berikut.
apiVersion: istio.alibabacloud.com/v1beta1 kind: LLMRoute metadata: name: dashscope-route spec: host: "*" gateways: - istio-system/ingress-gw rules: - name: ingress-route matches: - headers: host: exact: dashscope.aliyuncs.com # Proses permintaan yang dirutekan ke dashscope.aliyuncs.com, jika tidak 404 dikembalikan. - headers: host: exact: test.com # Proses permintaan yang dirutekan ke test.com. Setelah permintaan diproses oleh Plugin LLM ASM, aturan pencocokan rute dipicu ulang dan kondisi pencocokan sebelumnya terpenuhi. backendRefs: - providerHost: dashscope.aliyuncs.comJalankan perintah berikut untuk membuat LLMRoute.
kubectl apply -f dashscope-route.yaml
Langkah 4: Verifikasi
Jalankan perintah berikut secara lokal.
curl --location '${ASM Gateway IP}:80' \
--header 'Content-Type: application/json' \
--header "host: test.com" \
--data '{
"messages": [
{"role": "user", "content": "Silakan perkenalkan diri Anda"}
]
}'Output yang diharapkan:
{"choices":[{"message":{"role":"assistant","content":"Halo! Saya adalah Qwen, model bahasa pra-latih yang dikembangkan oleh Alibaba Cloud. Tujuan saya adalah membantu pengguna dalam menghasilkan berbagai jenis teks, seperti artikel, cerita, puisi, dan menjawab pertanyaan dengan memanfaatkan pengetahuan luas dan pemahaman konteks saya. Meskipun saya adalah AI, saya tidak memiliki tubuh fisik atau pengalaman pribadi seperti manusia, tetapi saya telah dilatih pada kumpulan data teks yang sangat besar, yang memungkinkan saya terlibat dalam percakapan, memberikan informasi, atau membantu berbagai tugas sebaik mungkin. Jadi, jangan ragu untuk bertanya apa saja, dan saya akan berusaha memberikan tanggapan yang membantu dan informatif!"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":12,"completion_tokens":130,"total_tokens":142},"created":1720682745,"system_fingerprint":null,"model":"qwen1.5-72b-chat","id":"chatcmpl-3608dcd5-e3ad-9ade-bc70-xxxxxxxxxxxxxx"}% Output menunjukkan bahwa jejak permintaan telah berhasil dibuat.
Langkah 5: Gunakan kemampuan keamanan gateway ASM
Langkah ini melibatkan pembuatan kebijakan otorisasi sederhana untuk memblokir akses ke layanan LLM melalui gateway ASM dari IP lokal tertentu.
Buat file bernama auth-policy.yaml dengan konten berikut.
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: labels: gateway: ingressgateway name: auth-policy namespace: istio-system spec: action: DENY rules: - from: - source: ipBlocks: - ${Local IP} to: - operation: hosts: - test.com selector: matchLabels: istio: ingressgatewayJalankan perintah berikut untuk menerapkan kebijakan otorisasi.
kubectl apply -f auth-policy.yamlJalankan ulang perintah uji di Langkah 4, dan output ditampilkan sebagai:
RBAC: akses ditolak
Kemampuan keamanan gateway ASM yang dikonfigurasikan untuk permintaan HTTP reguler juga berlaku untuk permintaan LLM. Kemampuan ini mencakup kebijakan otorisasi, autentikasi JWT, dan layanan otorisasi kustom. Menerapkan kebijakan ini pada gateway egress dapat secara signifikan meningkatkan keamanan aplikasi Anda.