النشر مع منصة الذكاء الاصطناعي لديك
جاردرينو أمام أي خادم نماذج
توجّه تطبيقاتك إلى جاردرينو، ويوجّه جاردرينو إلى خادم النماذج لديك. لا شيء يتغيّر في خادم النماذج، أيًّا كان.
نشر مُخطَّط جاردرينو قيد التطوير. تتلقى الشركات المشاركة في البرنامج التجريبي الحزمة من HisnLabs، وقد تتغيّر أسماء الملفات وقيم الـ chart والأوامر قبل الإصدار.
مرجع المطوّرين · دليل التثبيت · بطاقة النموذج المفتوح · وكيل متوافق مع OpenAI · البث · LiteLLM · وكيل أمان MCP · درس: تطبيق متوافق مع OpenAI · درس: LiteLLM · درس: أدوات MCP
جرّبه اليوم Guardrino-t7 Open، نسخة سابقة من المصنِّف، متاح للعموم على Hugging Face بترخيص Apache-2.0. يعمل العرض التجريبي في متصفحك: ما تكتبه يبقى على جهازك. عرض تجريبي مباشر · بطاقة النموذج · العرض نفسه على Hugging Face
المبدأ
صُمِّم جاردرينو ليقف بين تطبيقاتك وأي خادم نماذج يقدّم واجهة برمجية متوافقة مع OpenAI. يغيّر تطبيقك عنوانه الأساسي إلى جاردرينو، ويوجّه ملف سياسة جاردرينو upstream إلى خادم النماذج. يبقى خادم النماذج ونماذجه ووحدات GPU فيه كما هي تمامًا.
# Before: your app talks to the model server
base_url = "http://<model-server>/v1"
# After: your app talks to Guardrino, and Guardrino talks to the model server
base_url = "http://guardrino.internal:8080/v1" # in your app
url = "http://<model-server>/v1" # [upstream] in guardrino.tomlاجعل خادم النماذج متاحًا لجاردرينو وحده، كي يمرّ كل طلب عبر السياسة.
Docker Compose
خدمتان على جهاز واحد مزوّد بـ GPU: يقدّم vLLM النموذج، وجاردرينو هو المنفذ الوحيد الذي تراه تطبيقاتك.
services:
vllm:
image: vllm/vllm-openai:latest
command: ["--model", "<your-model>"]
ipc: host
volumes:
- ~/.cache/huggingface:/root/.cache/huggingface
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
# No published port: only Guardrino reaches the model server.
guardrino:
image: guardrino:<version> # loaded from the offline package (docker load -i ...)
depends_on: [vllm]
ports:
- "8080:8080" # the only port your apps see
volumes:
- ./guardrino:/etc/guardrino # guardrino.toml lives here
env_file: ./guardrino/guardrino.env# ./guardrino/guardrino.toml
mode = "observe"
[upstream]
url = "http://vllm:8000/v1" # the vllm service, by its Compose namedocker compose up -dvLLM على خادم
دون حاويات: يستمع خادم vLLM المتوافق مع OpenAI افتراضيًا على المنفذ 8000، تحت /v1. اربطه بعنوان يستطيع جاردرينو الوصول إليه، ووجّه upstream إليه.
# On the model server
vllm serve <your-model> --host <vllm-host> --port 8000# guardrino.toml on the Guardrino server
[upstream]
url = "http://<vllm-host>:8000/v1"Kubernetes
مخطط Helm (chart) مُخطَّط له. تحمل الحزمة غير المتصلة الـ chart والصور، فيُثبَّت العنقود المعزول من سجل الصور الداخلي لديك. تُقدَّم السياسة في ConfigMap، ويأتي مفتاح خادم النماذج من Secret تديره أصلًا.
# The offline package carries the chart and the images: push the images to your internal registry first.
helm install guardrino ./guardrino-<version>.tgz -n guardrino --create-namespace -f values.yamlimage:
repository: <your-registry>/guardrino
tag: "<version>"
replicaCount: 2
resources:
requests:
cpu: "4"
memory: 8Gi
limits:
memory: 16Gi
# Rendered into a ConfigMap as guardrino.toml
policy: |
mode = "observe"
[upstream]
url = "http://vllm.models.svc.cluster.local:8000/v1"
# The provider or model-server key, from a Secret you already have (leave out if the server needs none)
upstreamKeySecret:
name: upstream-credentials
key: api-key
service:
port: 8080تتبع قيم requests وlimits المتطلبات المُخطَّطة: 4 vCPU و8 GB للبدء، وحتى 16 GB.
Red Hat OpenShift وOpenShift AI
تعتمد منصة تقديم النموذج الواحد في OpenShift AI على KServe، وتتضمن vLLM ServingRuntime for KServe الذي تجيب نماذجه على نقاط نهاية متوافقة مع OpenAI. وجّه upstream إلى نقطة النهاية الداخلية للنموذج، المعروضة في لوحة تحكم OpenShift AI.
# In values.yaml, policy: the model's internal endpoint from the OpenShift AI dashboard
[upstream]
url = "https://<model-name>-predictor.<model-project>.svc.cluster.local:8443/v1"ثبّت الـ chart نفسه في مشروع خاص به، وامنح تطبيقاتك Route في OpenShift للوصول إليه.
oc new-project guardrino
helm install guardrino ./guardrino-<version>.tgz -n guardrino -f values.yaml
oc expose service guardrino # an OpenShift Route for your appsصُمِّم جاردرينو ليعمل بمستخدم غير جذري ضمن قيد سياق الأمان restricted-v2، وهو القيد الافتراضي في OpenShift. هذه نية التصميم، وليست شهادة.
خوادم ومزوّدون آخرون
صُمِّم جاردرينو ليعمل مع أي خادم متوافق مع OpenAI، ومن الأمثلة:
| الخادم | مثال على عنوان upstream |
|---|---|
| vLLM | http://<host>:8000/v1 |
| Hugging Face Text Generation Inference (Messages API) | http://<host>:<port>/v1 |
| Ollama | http://<host>:11434/v1 |
| NVIDIA NIM for LLMs | http://<host>:8000/v1 |
| Ray Serve LLM | http://<host>:8000/v1 |
| LocalAI | http://<host>:8080/v1 |
| LM Studio | http://<host>:1234/v1 |
| LiteLLM proxy | http://<host>:4000 |
المنافذ هي القيم الافتراضية الموثّقة لكل مشروع؛ استخدم العنوان الذي يستمع عليه خادمك فعلًا.
المزوّدون المستضافون
| المزوّد | كيف يصل إليه جاردرينو | الحالة |
|---|---|---|
| OpenAI | مباشرةً، بوصفه upstream متوافقًا مع OpenAI | مُخطَّط |
| Azure OpenAI | عبر مُحوِّل في البوابة | مُخطَّط |
| Anthropic | عبر مُحوِّل في البوابة | مُخطَّط |
| Mistral | عبر مُحوِّل في البوابة | مُخطَّط |
| AWS Bedrock | عبر مُحوِّل في البوابة | مُخطَّط |
| Google Gemini | عبر مُحوِّل في البوابة | مُخطَّط |
حاوية مرافقة (Sidecar)
يمكن للفرق التي تريد جاردرينو بجوار تطبيق واحد تشغيله في الـ pod نفسه، فيخاطبه التطبيق على localhost.
containers:
- name: app
image: <your-app-image>
env:
- name: OPENAI_BASE_URL # read by OpenAI's Python SDK
value: http://localhost:8080/v1
- name: guardrino
image: <your-registry>/guardrino:<version>
ports:
- containerPort: 8080
volumeMounts:
- name: guardrino-policy
mountPath: /etc/guardrinoأسماء المنتجات ملك لأصحابها. ذُكرت هنا فقط لتوضيح موقع جاردرينو، ولا يُقصد بها أي شراكة أو شهادة أو تأييد.