1886 lines
50 KiB
Plaintext
1886 lines
50 KiB
Plaintext
---
|
||
title: المزوّدون
|
||
description: استخدام أي موفّر LLM في OpenCode.
|
||
---
|
||
|
||
import config from "../../../../config.mjs"
|
||
export const console = config.console
|
||
|
||
يستخدم OpenCode [AI SDK](https://ai-sdk.dev/) و[Models.dev](https://models.dev) لدعم **أكثر من 75 موفّر LLM**، كما يدعم تشغيل النماذج المحلية.
|
||
|
||
لإضافة مزوّد تحتاج إلى:
|
||
|
||
1. أضف مفاتيح API الخاصة بالمزوّد باستخدام الأمر `/connect`.
|
||
2. اضبط المزوّد في ملف إعدادات OpenCode.
|
||
|
||
---
|
||
|
||
### بيانات الاعتماد
|
||
|
||
عند إضافة مفاتيح API الخاصة بمزوّد عبر الأمر `/connect`، يتم تخزينها
|
||
في `~/.local/share/opencode/auth.json`.
|
||
|
||
---
|
||
|
||
### الإعدادات
|
||
|
||
يمكنك تخصيص المزوّدات عبر قسم `provider` في ملف إعدادات OpenCode.
|
||
|
||
---
|
||
|
||
#### عنوان URL الأساسي
|
||
|
||
يمكنك تخصيص عنوان URL الأساسي لأي مزوّد عبر خيار `baseURL`. يفيد ذلك عند استخدام خدمات وسيطة (proxy) أو نقاط نهاية مخصّصة.
|
||
|
||
```json title="opencode.json" {6}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"anthropic": {
|
||
"options": {
|
||
"baseURL": "https://api.anthropic.com/v1"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## OpenCode Zen
|
||
|
||
OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد تم
|
||
اختبارها والتحقق من أنها تعمل بشكل جيد مع OpenCode. [اعرف المزيد](/docs/zen).
|
||
|
||
:::tip
|
||
إذا كنت جديدا، فننصح بالبدء مع OpenCode Zen.
|
||
:::
|
||
|
||
1. شغّل الأمر `/connect` في TUI، واختر opencode، ثم انتقل إلى [opencode.ai/auth](https://opencode.ai/auth).
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
2. سجّل الدخول، وأضف تفاصيل الفوترة، ثم انسخ مفتاح API الخاص بك.
|
||
|
||
3. الصق مفتاح API.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل `/models` في TUI لعرض قائمة النماذج التي نوصي بها.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
يعمل مثل أي مزوّد آخر في OpenCode واستخدامه اختياري بالكامل.
|
||
|
||
---
|
||
|
||
## الدليل
|
||
|
||
لنلقِ نظرة على بعض المزوّدات بالتفصيل. إذا رغبت في إضافة مزوّد إلى القائمة،
|
||
فلا تتردد في فتح PR.
|
||
|
||
:::note
|
||
ألا ترى مزوّدا هنا؟ أرسل PR.
|
||
:::
|
||
|
||
---
|
||
|
||
### 302.AI
|
||
|
||
1. توجّه إلى [302.AI console](https://302.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **302.AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ 302.AI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Amazon Bedrock
|
||
|
||
لاستخدام Amazon Bedrock مع OpenCode:
|
||
|
||
1. توجّه إلى **Model catalog** في Amazon Bedrock console واطلب
|
||
الوصول إلى النماذج التي تريدها.
|
||
|
||
:::tip
|
||
يجب أن يكون لديك وصول إلى النموذج الذي تريده في Amazon Bedrock.
|
||
:::
|
||
|
||
2. **اضبط المصادقة** باستخدام إحدى الطرق التالية:
|
||
|
||
#### متغيرات البيئة (بدء سريع)
|
||
|
||
عيّن أحد متغيرات البيئة التالية أثناء تشغيل opencode:
|
||
|
||
```bash
|
||
# Option 1: Using AWS access keys
|
||
AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode
|
||
|
||
# Option 2: Using named AWS profile
|
||
AWS_PROFILE=my-profile opencode
|
||
|
||
# Option 3: Using Bedrock bearer token
|
||
AWS_BEARER_TOKEN_BEDROCK=XXX opencode
|
||
```
|
||
|
||
أو أضفها إلى bash profile:
|
||
|
||
```bash title="~/.bash_profile"
|
||
export AWS_PROFILE=my-dev-profile
|
||
export AWS_REGION=us-east-1
|
||
```
|
||
|
||
#### ملف الإعدادات (موصى به)
|
||
|
||
للإعداد الخاص بالمشروع أو الإعداد الدائم، استخدم `opencode.json`:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"amazon-bedrock": {
|
||
"options": {
|
||
"region": "us-east-1",
|
||
"profile": "my-aws-profile"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**الخيارات المتاحة:**
|
||
- `region` - منطقة AWS (مثل `us-east-1`، `eu-west-1`)
|
||
- `profile` - ملف تعريف AWS المسمّى من `~/.aws/credentials`
|
||
- `endpoint` - عنوان URL لنقطة نهاية مخصّصة لنقاط نهاية VPC (اسم بديل لخيار `baseURL` العام)
|
||
|
||
:::tip
|
||
خيارات ملف الإعدادات لها أولوية على متغيرات البيئة.
|
||
:::
|
||
|
||
#### متقدم: نقاط نهاية VPC
|
||
|
||
إذا كنت تستخدم نقاط نهاية VPC لـ Bedrock:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"amazon-bedrock": {
|
||
"options": {
|
||
"region": "us-east-1",
|
||
"profile": "production",
|
||
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
:::note
|
||
خيار `endpoint` هو اسم بديل لخيار `baseURL` العام باستخدام مصطلحات AWS. إذا تم تحديد كل من `endpoint` و`baseURL`، فستكون الأولوية لـ `endpoint`.
|
||
:::
|
||
|
||
#### طرق المصادقة - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: أنشئ مستخدم IAM وأنشئ مفاتيح وصول من AWS Console
|
||
- **`AWS_PROFILE`**: استخدم ملفات تعريف مسمّاة من `~/.aws/credentials`. اضبط أولا عبر `aws configure --profile my-profile` أو `aws sso login`
|
||
- **`AWS_BEARER_TOKEN_BEDROCK`**: أنشئ مفاتيح API طويلة الأجل من Amazon Bedrock console
|
||
- **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: لـ EKS IRSA (IAM Roles for Service Accounts) أو بيئات Kubernetes أخرى مع اتحاد OIDC. يتم حقن متغيرات البيئة هذه تلقائيا بواسطة Kubernetes عند استخدام تعليقات حساب الخدمة.
|
||
|
||
#### أولوية المصادقة
|
||
|
||
يستخدم Amazon Bedrock أولوية المصادقة التالية:
|
||
1. **Bearer Token** - متغير البيئة `AWS_BEARER_TOKEN_BEDROCK` أو الرمز من الأمر `/connect`
|
||
2. **AWS Credential Chain** - الملف الشخصي، مفاتيح الوصول، بيانات الاعتماد المشتركة، أدوار IAM، رموز Web Identity (EKS IRSA)، بيانات تعريف المثيل
|
||
|
||
:::note
|
||
عند تعيين bearer token (عبر `/connect` أو `AWS_BEARER_TOKEN_BEDROCK`)، ستكون له أولوية على جميع طرق بيانات اعتماد AWS بما في ذلك ملفات التعريف المضبوطة.
|
||
:::
|
||
|
||
3. شغّل الأمر `/models` لاختيار النموذج الذي تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
:::note
|
||
بالنسبة إلى ملفات تعريف الاستدلال المخصّصة، استخدم اسم النموذج واسم المزوّد في المفتاح وعيّن الخاصية `id` إلى arn. يضمن ذلك التخزين المؤقت الصحيح:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"amazon-bedrock": {
|
||
// ...
|
||
"models": {
|
||
"anthropic-claude-sonnet-4.5": {
|
||
"id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
:::
|
||
|
||
---
|
||
|
||
### Anthropic
|
||
|
||
1. بعد إنشاء حسابك، شغّل الأمر `/connect` واختر Anthropic.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
2. هنا يمكنك اختيار خيار **Claude Pro/Max** وسيتم فتح المتصفح
|
||
وسيطلب منك المصادقة.
|
||
|
||
```txt
|
||
┌ Select auth method
|
||
│
|
||
│ Claude Pro/Max
|
||
│ Create an API Key
|
||
│ Manually enter API Key
|
||
└
|
||
```
|
||
|
||
3. الآن يجب أن تكون جميع نماذج Anthropic متاحة عند استخدام الأمر `/models`.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
:::info
|
||
استخدام اشتراك Claude Pro/Max داخل OpenCode غير مدعوم رسميا من [Anthropic](https://anthropic.com).
|
||
:::
|
||
|
||
##### استخدام مفاتيح API
|
||
|
||
يمكنك أيضا اختيار **Create an API Key** إذا لم يكن لديك اشتراك Pro/Max. سيفتح ذلك المتصفح أيضا ويطلب منك تسجيل الدخول إلى Anthropic ويعطيك رمزا يمكنك لصقه في terminal.
|
||
|
||
أو إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في terminal.
|
||
|
||
---
|
||
|
||
### Azure OpenAI
|
||
|
||
:::note
|
||
إذا واجهت أخطاء "I'm sorry, but I cannot assist with that request"، فجرّب تغيير مرشح المحتوى من **DefaultV2** إلى **Default** في مورد Azure الخاص بك.
|
||
:::
|
||
|
||
1. توجّه إلى [Azure portal](https://portal.azure.com/) وأنشئ موردا من نوع **Azure OpenAI**. ستحتاج إلى:
|
||
- **Resource name**: يصبح جزءا من نقطة نهاية API لديك (`https://RESOURCE_NAME.openai.azure.com/`)
|
||
- **API key**: إما `KEY 1` أو `KEY 2` من موردك
|
||
|
||
2. اذهب إلى [Azure AI Foundry](https://ai.azure.com/) وانشر نموذجا.
|
||
|
||
:::note
|
||
يجب أن يطابق اسم النشر اسم النموذج كي يعمل opencode بشكل صحيح.
|
||
:::
|
||
|
||
3. شغّل الأمر `/connect` وابحث عن **Azure**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
4. أدخل مفتاح API.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
5. عيّن اسم المورد كمتغير بيئة:
|
||
|
||
```bash
|
||
AZURE_RESOURCE_NAME=XXX opencode
|
||
```
|
||
|
||
أو أضفه إلى bash profile:
|
||
|
||
```bash title="~/.bash_profile"
|
||
export AZURE_RESOURCE_NAME=XXX
|
||
```
|
||
|
||
6. شغّل الأمر `/models` لاختيار النموذج الذي قمت بنشره.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Azure Cognitive Services
|
||
|
||
1. توجّه إلى [Azure portal](https://portal.azure.com/) وأنشئ موردا من نوع **Azure OpenAI**. ستحتاج إلى:
|
||
- **Resource name**: يصبح جزءا من نقطة نهاية API لديك (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`)
|
||
- **API key**: إما `KEY 1` أو `KEY 2` من موردك
|
||
|
||
2. اذهب إلى [Azure AI Foundry](https://ai.azure.com/) وانشر نموذجا.
|
||
|
||
:::note
|
||
يجب أن يطابق اسم النشر اسم النموذج كي يعمل opencode بشكل صحيح.
|
||
:::
|
||
|
||
3. شغّل الأمر `/connect` وابحث عن **Azure Cognitive Services**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
4. أدخل مفتاح API.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
5. عيّن اسم المورد كمتغير بيئة:
|
||
|
||
```bash
|
||
AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode
|
||
```
|
||
|
||
أو أضفه إلى bash profile:
|
||
|
||
```bash title="~/.bash_profile"
|
||
export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX
|
||
```
|
||
|
||
6. شغّل الأمر `/models` لاختيار النموذج الذي قمت بنشره.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Baseten
|
||
|
||
1. توجّه إلى [Baseten](https://app.baseten.co/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Baseten**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Baseten.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Cerebras
|
||
|
||
1. توجّه إلى [Cerebras console](https://inference.cerebras.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Cerebras**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Cerebras.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Qwen 3 Coder 480B_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Cloudflare AI Gateway
|
||
|
||
تتيح Cloudflare AI Gateway الوصول إلى نماذج من OpenAI وAnthropic وWorkers AI وغيرها عبر نقطة نهاية موحّدة. مع [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) لن تحتاج إلى مفاتيح API منفصلة لكل مزوّد.
|
||
|
||
1. توجّه إلى [Cloudflare dashboard](https://dash.cloudflare.com/)، وانتقل إلى **AI** > **AI Gateway**، وأنشئ بوابة جديدة.
|
||
|
||
2. عيّن Account ID وGateway ID كمتغيرات بيئة.
|
||
|
||
```bash title="~/.bash_profile"
|
||
export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id
|
||
export CLOUDFLARE_GATEWAY_ID=your-gateway-id
|
||
```
|
||
|
||
3. شغّل الأمر `/connect` وابحث عن **Cloudflare AI Gateway**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
4. أدخل Cloudflare API token.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
أو عيّنه كمتغير بيئة.
|
||
|
||
```bash title="~/.bash_profile"
|
||
export CLOUDFLARE_API_TOKEN=your-api-token
|
||
```
|
||
|
||
5. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
يمكنك أيضا إضافة نماذج عبر إعدادات opencode.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"cloudflare-ai-gateway": {
|
||
"models": {
|
||
"openai/gpt-4o": {},
|
||
"anthropic/claude-sonnet-4": {}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Cortecs
|
||
|
||
1. توجّه إلى [Cortecs console](https://cortecs.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Cortecs**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Cortecs.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### DeepSeek
|
||
|
||
1. توجّه إلى [DeepSeek console](https://platform.deepseek.com/)، وأنشئ حسابا، ثم انقر **Create new API key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **DeepSeek**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ DeepSeek.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج من DeepSeek مثل _DeepSeek Reasoner_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Deep Infra
|
||
|
||
1. توجّه إلى [Deep Infra dashboard](https://deepinfra.com/dash)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Deep Infra**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Deep Infra.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Firmware
|
||
|
||
1. توجّه إلى [Firmware dashboard](https://app.firmware.ai/signup)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Firmware**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Firmware.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Fireworks AI
|
||
|
||
1. توجّه إلى [Fireworks AI console](https://app.fireworks.ai/)، وأنشئ حسابا، ثم انقر **Create API Key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Fireworks AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Fireworks AI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### GitLab Duo
|
||
|
||
يوفّر GitLab Duo دردشة وكيلة (agentic) مدعومة بالذكاء الاصطناعي مع قدرات استدعاء أدوات بشكل مدمج عبر Anthropic proxy الخاصة بـ GitLab.
|
||
|
||
1. شغّل الأمر `/connect` واختر GitLab.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
2. اختر طريقة المصادقة:
|
||
|
||
```txt
|
||
┌ Select auth method
|
||
│
|
||
│ OAuth (Recommended)
|
||
│ Personal Access Token
|
||
└
|
||
```
|
||
|
||
#### استخدام OAuth (موصى به)
|
||
|
||
اختر **OAuth** وسيفتح المتصفح لإتمام التفويض.
|
||
|
||
#### استخدام Personal Access Token 1. اذهب إلى [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)
|
||
2. انقر **Add new token**
|
||
3. Name: `OpenCode`، Scopes: `api`
|
||
4. انسخ الرمز (يبدأ بـ `glpat-`)
|
||
5. أدخله في terminal
|
||
|
||
3. شغّل الأمر `/models` لعرض النماذج المتاحة.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
تتوفر ثلاثة نماذج مبنية على Claude:
|
||
- **duo-chat-haiku-4-5** (Default) - استجابات سريعة للمهام السريعة
|
||
- **duo-chat-sonnet-4-5** - أداء متوازن لمعظم سير العمل
|
||
- **duo-chat-opus-4-5** - الأكثر قدرة للتحليل المعقّد
|
||
|
||
:::note
|
||
يمكنك أيضا تعيين متغير البيئة 'GITLAB_TOKEN' إذا لم تكن تريد
|
||
تخزين الرمز في مساحة تخزين مصادقة opencode.
|
||
:::
|
||
|
||
##### GitLab مستضاف ذاتيا
|
||
|
||
:::note[ملاحظة امتثال]
|
||
يستخدم OpenCode نموذجا صغيرا لبعض مهام الذكاء الاصطناعي مثل إنشاء عنوان الجلسة.
|
||
تم ضبطه لاستخدام gpt-5-nano افتراضيا، مستضافا عبر Zen. لحصر OpenCode
|
||
على استخدام مثيل GitLab المستضاف لديك فقط، أضف ما يلي إلى ملف
|
||
`opencode.json` لديك. يوصى أيضا بتعطيل مشاركة الجلسات.
|
||
|
||
```json
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"small_model": "gitlab/duo-chat-haiku-4-5",
|
||
"share": "disabled"
|
||
}
|
||
```
|
||
|
||
:::
|
||
|
||
لمثيلات GitLab المستضافة ذاتيا:
|
||
|
||
```bash
|
||
export GITLAB_INSTANCE_URL=https://gitlab.company.com
|
||
export GITLAB_TOKEN=glpat-...
|
||
```
|
||
|
||
إذا كان مثيلك يشغّل AI Gateway مخصّصة:
|
||
|
||
```bash
|
||
GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
|
||
```
|
||
|
||
أو أضفها إلى bash profile:
|
||
|
||
```bash title="~/.bash_profile"
|
||
export GITLAB_INSTANCE_URL=https://gitlab.company.com
|
||
export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
|
||
export GITLAB_TOKEN=glpat-...
|
||
```
|
||
|
||
:::note
|
||
يجب على مدير GitLab لديك تفعيل ما يلي:
|
||
|
||
1. [Duo Agent Platform](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) للمستخدم أو المجموعة أو المثيل
|
||
2. Feature flags (عبر Rails console):
|
||
- `agent_platform_claude_code`
|
||
- `third_party_agents_enabled`
|
||
:::
|
||
|
||
##### OAuth للمثيلات المستضافة ذاتيا
|
||
|
||
لكي يعمل Oauth مع مثيلك المستضاف ذاتيا، تحتاج إلى إنشاء
|
||
تطبيق جديد (Settings → Applications) مع
|
||
callback URL `http://127.0.0.1:8080/callback` ونطاقات الصلاحيات التالية:
|
||
|
||
- api (Access the API on your behalf)
|
||
- read_user (Read your personal information)
|
||
- read_repository (Allows read-only access to the repository)
|
||
|
||
ثم عرّض application ID كمتغير بيئة:
|
||
|
||
```bash
|
||
export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||
```
|
||
|
||
مزيد من التوثيق على صفحة [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth).
|
||
|
||
##### التهيئة
|
||
|
||
خصّص عبر `opencode.json`:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"gitlab": {
|
||
"options": {
|
||
"instanceUrl": "https://gitlab.com",
|
||
"featureFlags": {
|
||
"duo_agent_platform_agentic_chat": true,
|
||
"duo_agent_platform": true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
##### أدوات GitLab API (اختياري، لكن موصى به بشدة)
|
||
|
||
للوصول إلى أدوات GitLab (merge requests وissues وpipelines وCI/CD وغيرها):
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"plugin": ["@gitlab/opencode-gitlab-plugin"]
|
||
}
|
||
```
|
||
|
||
يوفّر هذا الملحق قدرات شاملة لإدارة مستودعات GitLab بما في ذلك مراجعات MR وتتبع issues ومراقبة pipelines وغير ذلك.
|
||
|
||
---
|
||
|
||
### GitHub Copilot
|
||
|
||
لاستخدام اشتراك GitHub Copilot مع opencode:
|
||
|
||
:::note
|
||
قد تتطلب بعض النماذج اشتراك [Pro+](https://github.com/features/copilot/plans) للاستخدام.
|
||
|
||
تحتاج بعض النماذج إلى تفعيل يدوي من [إعدادات GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use).
|
||
:::
|
||
|
||
1. شغّل الأمر `/connect` وابحث عن GitHub Copilot.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
2. انتقل إلى [github.com/login/device](https://github.com/login/device) وأدخل الرمز.
|
||
|
||
```txt
|
||
┌ Login with GitHub Copilot
|
||
│
|
||
│ https://github.com/login/device
|
||
│
|
||
│ Enter code: 8F43-6FCF
|
||
│
|
||
└ Waiting for authorization...
|
||
```
|
||
|
||
3. الآن شغّل الأمر `/models` لاختيار النموذج الذي تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Google Vertex AI
|
||
|
||
لاستخدام Google Vertex AI مع OpenCode:
|
||
|
||
1. توجّه إلى **Model Garden** في Google Cloud Console وتحقق من
|
||
النماذج المتاحة في منطقتك.
|
||
|
||
:::note
|
||
تحتاج إلى مشروع Google Cloud مع تفعيل Vertex AI API.
|
||
:::
|
||
|
||
2. عيّن متغيرات البيئة المطلوبة:
|
||
- `GOOGLE_CLOUD_PROJECT`: معرّف مشروع Google Cloud لديك
|
||
- `VERTEX_LOCATION` (اختياري): منطقة Vertex AI (الافتراضي `global`)
|
||
- المصادقة (اختر واحدا):
|
||
- `GOOGLE_APPLICATION_CREDENTIALS`: مسار ملف مفتاح حساب الخدمة بصيغة JSON
|
||
- المصادقة عبر gcloud CLI: `gcloud auth application-default login`
|
||
|
||
عيّنها أثناء تشغيل opencode.
|
||
|
||
```bash
|
||
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode
|
||
```
|
||
|
||
أو أضفها إلى bash profile.
|
||
|
||
```bash title="~/.bash_profile"
|
||
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
|
||
export GOOGLE_CLOUD_PROJECT=your-project-id
|
||
export VERTEX_LOCATION=global
|
||
```
|
||
|
||
:::tip
|
||
تساعد منطقة `global` على تحسين التوفر وتقليل الأخطاء دون تكلفة إضافية. استخدم نقاط نهاية إقليمية (مثل `us-central1`) لمتطلبات موضع البيانات. [اعرف المزيد](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints)
|
||
:::
|
||
|
||
3. شغّل الأمر `/models` لاختيار النموذج الذي تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Groq
|
||
|
||
1. توجّه إلى [Groq console](https://console.groq.com/)، وانقر **Create API Key**، ثم انسخ المفتاح.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن Groq.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بالمزوّد.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار ما تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Hugging Face
|
||
|
||
توفّر [Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) وصولا إلى نماذج مفتوحة مدعومة من أكثر من 17 مزوّدا.
|
||
|
||
1. توجّه إلى [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained) لإنشاء رمز (token) بصلاحية إجراء طلبات إلى Inference Providers.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Hugging Face**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل token الخاص بـ Hugging Face.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi-K2-Instruct_ أو _GLM-4.6_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Helicone
|
||
|
||
[Helicone](https://helicone.ai) منصة لملاحظة LLM (observability) توفّر التسجيل والمراقبة والتحليلات لتطبيقات الذكاء الاصطناعي لديك. تقوم Helicone AI Gateway بتوجيه طلباتك تلقائيا إلى المزوّد المناسب بناء على النموذج.
|
||
|
||
1. توجّه إلى [Helicone](https://helicone.ai)، وأنشئ حسابا، ثم أنشئ مفتاح API من لوحة التحكم.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Helicone**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Helicone.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
لمزيد من المزوّدات والميزات المتقدمة مثل التخزين المؤقت (caching) وتحديد المعدّل (rate limiting)، راجع [توثيق Helicone](https://docs.helicone.ai).
|
||
|
||
#### إعدادات اختيارية
|
||
|
||
إذا رأيت ميزة أو نموذجا في Helicone لم يتم ضبطه تلقائيا عبر opencode، فيمكنك دائما ضبطه بنفسك.
|
||
|
||
هذه هي [Helicone's Model Directory](https://helicone.ai/models)، وستحتاجها للحصول على IDs الخاصة بالنماذج التي تريد إضافتها.
|
||
|
||
```jsonc title="~/.config/opencode/opencode.jsonc"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"helicone": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "Helicone",
|
||
"options": {
|
||
"baseURL": "https://ai-gateway.helicone.ai",
|
||
},
|
||
"models": {
|
||
"gpt-4o": {
|
||
// Model ID (from Helicone's model directory page)
|
||
"name": "GPT-4o", // Your own custom name for the model
|
||
},
|
||
"claude-sonnet-4-20250514": {
|
||
"name": "Claude Sonnet 4",
|
||
},
|
||
},
|
||
},
|
||
},
|
||
}
|
||
```
|
||
|
||
#### ترويسات مخصّصة
|
||
|
||
تدعم Helicone ترويسات مخصّصة لميزات مثل التخزين المؤقت وتتبع المستخدم وإدارة الجلسات. أضفها إلى إعداد المزوّد عبر `options.headers`:
|
||
|
||
```jsonc title="~/.config/opencode/opencode.jsonc"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"helicone": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "Helicone",
|
||
"options": {
|
||
"baseURL": "https://ai-gateway.helicone.ai",
|
||
"headers": {
|
||
"Helicone-Cache-Enabled": "true",
|
||
"Helicone-User-Id": "opencode",
|
||
},
|
||
},
|
||
},
|
||
},
|
||
}
|
||
```
|
||
|
||
##### تتبع الجلسات
|
||
|
||
تتيح ميزة [Sessions](https://docs.helicone.ai/features/sessions) في Helicone تجميع طلبات LLM المرتبطة معا. استخدم ملحق [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) لتسجيل كل محادثة OpenCode تلقائيا كجلسة في Helicone.
|
||
|
||
```bash
|
||
npm install -g opencode-helicone-session
|
||
```
|
||
|
||
أضفه إلى إعداداتك.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"plugin": ["opencode-helicone-session"]
|
||
}
|
||
```
|
||
|
||
يقوم الملحق بحقن ترويسات `Helicone-Session-Id` و`Helicone-Session-Name` ضمن طلباتك. في صفحة Sessions داخل Helicone، سترى كل محادثة OpenCode مدرجة كجلسة مستقلة.
|
||
|
||
##### ترويسات Helicone الشائعة
|
||
|
||
| Header | الوصف |
|
||
| -------------------------- | -------------------------------------------------------- |
|
||
| `Helicone-Cache-Enabled` | تفعيل التخزين المؤقت للاستجابات (`true`/`false`) |
|
||
| `Helicone-User-Id` | تتبع المقاييس حسب المستخدم |
|
||
| `Helicone-Property-[Name]` | إضافة خصائص مخصّصة (مثل `Helicone-Property-Environment`) |
|
||
| `Helicone-Prompt-Id` | ربط الطلبات بإصدارات prompt |
|
||
|
||
راجع [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory) لعرض جميع الترويسات المتاحة.
|
||
|
||
---
|
||
|
||
### llama.cpp
|
||
|
||
يمكنك ضبط opencode لاستخدام نماذج محلية عبر أداة llama-server ضمن [llama.cpp](https://github.com/ggml-org/llama.cpp)
|
||
|
||
```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"llama.cpp": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "llama-server (local)",
|
||
"options": {
|
||
"baseURL": "http://127.0.0.1:8080/v1"
|
||
},
|
||
"models": {
|
||
"qwen3-coder:a3b": {
|
||
"name": "Qwen3-Coder: a3b-30b (local)",
|
||
"limit": {
|
||
"context": 128000,
|
||
"output": 65536
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
في هذا المثال:
|
||
|
||
- `llama.cpp` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
|
||
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
|
||
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
|
||
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
|
||
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.
|
||
|
||
---
|
||
|
||
### IO.NET
|
||
|
||
تقدّم IO.NET 17 نموذجا محسّنا لاستخدامات متعددة:
|
||
|
||
1. توجّه إلى [IO.NET console](https://ai.io.net/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **IO.NET**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ IO.NET.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### LM Studio
|
||
|
||
يمكنك ضبط opencode لاستخدام نماذج محلية عبر LM Studio.
|
||
|
||
```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"lmstudio": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "LM Studio (local)",
|
||
"options": {
|
||
"baseURL": "http://127.0.0.1:1234/v1"
|
||
},
|
||
"models": {
|
||
"google/gemma-3n-e4b": {
|
||
"name": "Gemma 3n-e4b (local)"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
في هذا المثال:
|
||
|
||
- `lmstudio` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
|
||
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
|
||
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
|
||
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
|
||
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.
|
||
|
||
---
|
||
|
||
### Moonshot AI
|
||
|
||
لاستخدام Kimi K2 من Moonshot AI:
|
||
|
||
1. توجّه إلى [Moonshot AI console](https://platform.moonshot.ai/console)، وأنشئ حسابا، ثم انقر **Create API key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Moonshot AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Moonshot.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار _Kimi K2_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### MiniMax
|
||
|
||
1. توجّه إلى [MiniMax API Console](https://platform.minimax.io/login)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **MiniMax**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ MiniMax.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _M2.1_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Nebius Token Factory
|
||
|
||
1. توجّه إلى [Nebius Token Factory console](https://tokenfactory.nebius.com/)، وأنشئ حسابا، ثم انقر **Add Key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Nebius Token Factory**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Nebius Token Factory.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Ollama
|
||
|
||
يمكنك ضبط opencode لاستخدام نماذج محلية عبر Ollama.
|
||
|
||
:::tip
|
||
يمكن لـ Ollama ضبط نفسه تلقائيا للعمل مع OpenCode. راجع [توثيق تكامل Ollama](https://docs.ollama.com/integrations/opencode) للتفاصيل.
|
||
:::
|
||
|
||
```json title="opencode.json" "ollama" {5, 6, 8, 10-14}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"ollama": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "Ollama (local)",
|
||
"options": {
|
||
"baseURL": "http://localhost:11434/v1"
|
||
},
|
||
"models": {
|
||
"llama2": {
|
||
"name": "Llama 2"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
في هذا المثال:
|
||
|
||
- `ollama` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
|
||
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
|
||
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
|
||
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
|
||
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.
|
||
|
||
:::tip
|
||
إذا لم تكن tool calls تعمل، جرّب زيادة `num_ctx` في Ollama. ابدأ بنحو 16k - 32k.
|
||
:::
|
||
|
||
---
|
||
|
||
### Ollama Cloud
|
||
|
||
لاستخدام Ollama Cloud مع OpenCode:
|
||
|
||
1. توجّه إلى [https://ollama.com/](https://ollama.com/) وسجّل الدخول أو أنشئ حسابا.
|
||
|
||
2. انتقل إلى **Settings** > **Keys** وانقر **Add API Key** لإنشاء مفتاح API جديد.
|
||
|
||
3. انسخ مفتاح API لاستخدامه في OpenCode.
|
||
|
||
4. شغّل الأمر `/connect` وابحث عن **Ollama Cloud**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
5. أدخل مفتاح API الخاص بـ Ollama Cloud.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
6. **مهم**: قبل استخدام نماذج السحابة في OpenCode، يجب سحب معلومات النموذج محليا:
|
||
|
||
```bash
|
||
ollama pull gpt-oss:20b-cloud
|
||
```
|
||
|
||
7. شغّل الأمر `/models` لاختيار نموذج Ollama Cloud.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### OpenAI
|
||
|
||
نوصي بالاشتراك في [ChatGPT Plus أو Pro](https://chatgpt.com/pricing).
|
||
|
||
1. بعد الاشتراك، شغّل الأمر `/connect` واختر OpenAI.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
2. هنا يمكنك اختيار خيار **ChatGPT Plus/Pro** وسيتم فتح المتصفح
|
||
وسيطلب منك المصادقة.
|
||
|
||
```txt
|
||
┌ Select auth method
|
||
│
|
||
│ ChatGPT Plus/Pro
|
||
│ Manually enter API Key
|
||
└
|
||
```
|
||
|
||
3. الآن يجب أن تكون جميع نماذج OpenAI متاحة عند استخدام الأمر `/models`.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
##### استخدام مفاتيح API
|
||
|
||
إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في terminal.
|
||
|
||
---
|
||
|
||
### OpenCode Zen
|
||
|
||
OpenCode Zen هي قائمة من النماذج التي تم اختبارها والتحقق منها مقدّمة من فريق OpenCode. [اعرف المزيد](/docs/zen).
|
||
|
||
1. سجّل الدخول إلى **<a href={console}>OpenCode Zen</a>** وانقر **Create API Key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **OpenCode Zen**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ OpenCode.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Qwen 3 Coder 480B_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### OpenRouter
|
||
|
||
1. توجّه إلى [OpenRouter dashboard](https://openrouter.ai/settings/keys)، وانقر **Create API Key**، ثم انسخ المفتاح.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن OpenRouter.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بالمزوّد.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. يتم تحميل العديد من نماذج OpenRouter مسبقا بشكل افتراضي؛ شغّل الأمر `/models` لاختيار ما تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
يمكنك أيضا إضافة نماذج إضافية عبر إعدادات opencode.
|
||
|
||
```json title="opencode.json" {6}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"openrouter": {
|
||
"models": {
|
||
"somecoolnewmodel": {}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
5. يمكنك أيضا تخصيصها عبر إعدادات opencode. إليك مثالا على تحديد مزوّد
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"openrouter": {
|
||
"models": {
|
||
"moonshotai/kimi-k2": {
|
||
"options": {
|
||
"provider": {
|
||
"order": ["baseten"],
|
||
"allow_fallbacks": false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### SAP AI Core
|
||
|
||
يوفّر SAP AI Core وصولا إلى أكثر من 40 نموذجا من OpenAI وAnthropic وGoogle وAmazon وMeta وMistral وAI21 عبر منصة موحّدة.
|
||
|
||
1. اذهب إلى [SAP BTP Cockpit](https://account.hana.ondemand.com/)، وانتقل إلى مثيل خدمة SAP AI Core لديك، ثم أنشئ service key.
|
||
|
||
:::tip
|
||
service key هو كائن JSON يحتوي على `clientid` و`clientsecret` و`url` و`serviceurls.AI_API_URL`. يمكنك العثور على مثيل AI Core ضمن **Services** > **Instances and Subscriptions** في BTP Cockpit.
|
||
:::
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **SAP AI Core**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل JSON الخاص بـ service key.
|
||
|
||
```txt
|
||
┌ Service key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
أو عيّن متغير البيئة `AICORE_SERVICE_KEY`:
|
||
|
||
```bash
|
||
AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
|
||
```
|
||
|
||
أو أضفه إلى bash profile:
|
||
|
||
```bash title="~/.bash_profile"
|
||
export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
|
||
```
|
||
|
||
4. اختياريا، عيّن deployment ID وresource group:
|
||
|
||
```bash
|
||
AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
|
||
```
|
||
|
||
:::note
|
||
هذه الإعدادات اختيارية ويجب ضبطها وفقا لإعداد SAP AI Core لديك.
|
||
:::
|
||
|
||
5. شغّل الأمر `/models` للاختيار من بين أكثر من 40 نموذجا متاحا.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### OVHcloud AI Endpoints
|
||
|
||
1. توجّه إلى [OVHcloud panel](https://ovh.com/manager). انتقل إلى قسم `Public Cloud`، ثم `AI & Machine Learning` > `AI Endpoints`، وفي تبويب `API Keys` انقر **Create a new API key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **OVHcloud AI Endpoints**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ OVHcloud AI Endpoints.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _gpt-oss-120b_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Scaleway
|
||
|
||
لاستخدام [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) مع Opencode:
|
||
|
||
1. توجّه إلى [Scaleway Console IAM settings](https://console.scaleway.com/iam/api-keys) لإنشاء مفتاح API جديد.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Scaleway**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Scaleway.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _devstral-2-123b-instruct-2512_ أو _gpt-oss-120b_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Together AI
|
||
|
||
1. توجّه إلى [Together AI console](https://api.together.ai)، وأنشئ حسابا، ثم انقر **Add Key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Together AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Together AI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Venice AI
|
||
|
||
1. توجّه إلى [Venice AI console](https://venice.ai)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Venice AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Venice AI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Llama 3.3 70B_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Vercel AI Gateway
|
||
|
||
تتيح Vercel AI Gateway الوصول إلى نماذج من OpenAI وAnthropic وGoogle وxAI وغيرها عبر نقطة نهاية موحّدة. تُقدّم النماذج بسعر القائمة دون أي زيادة.
|
||
|
||
1. توجّه إلى [Vercel dashboard](https://vercel.com/)، وانتقل إلى تبويب **AI Gateway**، ثم انقر **API keys** لإنشاء مفتاح API جديد.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Vercel AI Gateway**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ Vercel AI Gateway.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
يمكنك أيضا تخصيص النماذج عبر إعدادات opencode. إليك مثالا على تحديد ترتيب توجيه المزوّدات.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"vercel": {
|
||
"models": {
|
||
"anthropic/claude-sonnet-4": {
|
||
"options": {
|
||
"order": ["anthropic", "vertex"]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
بعض خيارات التوجيه المفيدة:
|
||
|
||
| Option | الوصف |
|
||
| ------------------- | ----------------------------------------------- |
|
||
| `order` | تسلسل المزوّدات التي سيتم تجربتها |
|
||
| `only` | تقييد الاستخدام على مزوّدات محددة |
|
||
| `zeroDataRetention` | استخدام مزوّدات بسياسات احتفاظ بيانات صفرية فقط |
|
||
|
||
---
|
||
|
||
### xAI
|
||
|
||
1. توجّه إلى [xAI console](https://console.x.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **xAI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بـ xAI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _Grok Beta_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### Z.AI
|
||
|
||
1. توجّه إلى [Z.AI API console](https://z.ai/manage-apikey/apikey-list)، وأنشئ حسابا، ثم انقر **Create a new API key**.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن **Z.AI**.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
إذا كنت مشتركا في **GLM Coding Plan**، فاختر **Z.AI Coding Plan**.
|
||
|
||
3. أدخل مفتاح API الخاص بـ Z.AI.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. شغّل الأمر `/models` لاختيار نموذج مثل _GLM-4.7_.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
---
|
||
|
||
### ZenMux
|
||
|
||
1. توجّه إلى [ZenMux dashboard](https://zenmux.ai/settings/keys)، وانقر **Create API Key**، ثم انسخ المفتاح.
|
||
|
||
2. شغّل الأمر `/connect` وابحث عن ZenMux.
|
||
|
||
```txt
|
||
/connect
|
||
```
|
||
|
||
3. أدخل مفتاح API الخاص بالمزوّد.
|
||
|
||
```txt
|
||
┌ API key
|
||
│
|
||
│
|
||
└ enter
|
||
```
|
||
|
||
4. يتم تحميل العديد من نماذج ZenMux مسبقا بشكل افتراضي؛ شغّل الأمر `/models` لاختيار ما تريده.
|
||
|
||
```txt
|
||
/models
|
||
```
|
||
|
||
يمكنك أيضا إضافة نماذج إضافية عبر إعدادات opencode.
|
||
|
||
```json title="opencode.json" {6}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"zenmux": {
|
||
"models": {
|
||
"somecoolnewmodel": {}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## موفّر مخصّص
|
||
|
||
لإضافة أي مزوّد **OpenAI-compatible** غير موجود ضمن الأمر `/connect`:
|
||
|
||
:::tip
|
||
يمكنك استخدام أي مزوّد OpenAI-compatible مع opencode. معظم مزوّدي الذكاء الاصطناعي الحديثة يقدّمون APIs متوافقة مع OpenAI.
|
||
:::
|
||
|
||
1. شغّل الأمر `/connect` ومرّر للأسفل حتى **Other**.
|
||
|
||
```bash
|
||
$ /connect
|
||
|
||
┌ Add credential
|
||
│
|
||
◆ Select provider
|
||
│ ...
|
||
│ ● Other
|
||
└
|
||
```
|
||
|
||
2. أدخل ID فريدا للمزوّد.
|
||
|
||
```bash
|
||
$ /connect
|
||
|
||
┌ Add credential
|
||
│
|
||
◇ Enter provider id
|
||
│ myprovider
|
||
└
|
||
```
|
||
|
||
:::note
|
||
اختر ID سهل التذكر؛ ستستخدمه في ملف الإعدادات.
|
||
:::
|
||
|
||
3. أدخل مفتاح API الخاص بالمزوّد.
|
||
|
||
```bash
|
||
$ /connect
|
||
|
||
┌ Add credential
|
||
│
|
||
▲ This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples.
|
||
│
|
||
◇ Enter your API key
|
||
│ sk-...
|
||
└
|
||
```
|
||
|
||
4. أنشئ أو حدّث ملف `opencode.json` في دليل مشروعك:
|
||
|
||
```json title="opencode.json" ""myprovider"" {5-15}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"myprovider": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "My AI ProviderDisplay Name",
|
||
"options": {
|
||
"baseURL": "https://api.myprovider.com/v1"
|
||
},
|
||
"models": {
|
||
"my-model-name": {
|
||
"name": "My Model Display Name"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
خيارات التهيئة هي:
|
||
- **npm**: حزمة AI SDK المستخدمة؛ استخدم `@ai-sdk/openai-compatible` للمزوّدات OpenAI-compatible
|
||
- **name**: اسم العرض في واجهة المستخدم.
|
||
- **models**: النماذج المتاحة.
|
||
- **options.baseURL**: عنوان URL لنقطة نهاية API.
|
||
- **options.apiKey**: تعيين مفتاح API اختياريا إذا لم تكن تستخدم auth.
|
||
- **options.headers**: تعيين ترويسات مخصّصة اختياريا.
|
||
|
||
مزيد من التفاصيل حول الخيارات المتقدمة في المثال التالي.
|
||
|
||
5. شغّل الأمر `/models` وستظهر المزوّدات والنماذج المخصّصة في قائمة الاختيار.
|
||
|
||
---
|
||
|
||
##### مثال
|
||
|
||
إليك مثالا يضبط خيارات `apiKey` و`headers` وخيارات `limit` الخاصة بالنموذج.
|
||
|
||
```json title="opencode.json" {9,11,17-20}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"provider": {
|
||
"myprovider": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "My AI ProviderDisplay Name",
|
||
"options": {
|
||
"baseURL": "https://api.myprovider.com/v1",
|
||
"apiKey": "{env:ANTHROPIC_API_KEY}",
|
||
"headers": {
|
||
"Authorization": "Bearer custom-token"
|
||
}
|
||
},
|
||
"models": {
|
||
"my-model-name": {
|
||
"name": "My Model Display Name",
|
||
"limit": {
|
||
"context": 200000,
|
||
"output": 65536
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
تفاصيل التهيئة:
|
||
|
||
- **apiKey**: يتم تعيينه عبر صيغة متغيرات `env`، [اعرف المزيد](/docs/config#env-vars).
|
||
- **headers**: ترويسات مخصّصة تُرسل مع كل طلب.
|
||
- **limit.context**: الحد الأقصى لرموز الإدخال التي يقبلها النموذج.
|
||
- **limit.output**: الحد الأقصى للرموز التي يمكن للنموذج توليدها.
|
||
|
||
تسمح حقول `limit` لـ OpenCode بفهم مقدار السياق المتبقي لديك. تسحب المزوّدات القياسية هذه القيم تلقائيا من models.dev.
|
||
|
||
---
|
||
|
||
## استكشاف الأخطاء وإصلاحها
|
||
|
||
إذا كنت تواجه مشكلة في تهيئة مزوّد، فتحقق مما يلي:
|
||
|
||
1. **تحقق من إعداد auth**: شغّل `opencode auth list` لمعرفة ما إذا كانت بيانات الاعتماد
|
||
الخاصة بالمزوّد قد أضيفت إلى إعداداتك.
|
||
|
||
لا ينطبق هذا على مزوّدات مثل Amazon Bedrock التي تعتمد على متغيرات البيئة لـ auth.
|
||
|
||
2. للمزوّدات المخصّصة، راجع إعدادات opencode وتأكد من:
|
||
- أن provider ID المستخدم في الأمر `/connect` يطابق الـ ID في إعدادات opencode.
|
||
- استخدام حزمة npm الصحيحة للمزوّد. على سبيل المثال استخدم `@ai-sdk/cerebras` لـ Cerebras. ولكل المزوّدات الأخرى المتوافقة مع OpenAI استخدم `@ai-sdk/openai-compatible`.
|
||
- استخدام نقطة نهاية API الصحيحة في الحقل `options.baseURL`.
|