Apidog

منصة تطوير API تعاونية متكاملة

تصميم API

توثيق API

تصحيح أخطاء API

محاكاة API

اختبار API الآلي

دمج واجهات برمجة تطبيقات DeepSeek في تطبيقاتك في 5 دقائق فقط

@apidog

@apidog

Updated on فبراير 11, 2025

في عصر التطبيقات المدعومة بالذكاء الاصطناعي، يمكن أن يفتح دمج نماذج اللغة المتقدمة في برنامجك إمكانيات غير مسبوقة - من الدردشات الذكية إلى أدوات تحليل البيانات. تقدم واجهات برمجة التطبيقات الخاصة بـ DeepSeek وظائف ذكاء اصطناعي متطورة، لكن التحدي الحقيقي يكمن في دمجها بسلاسة في تطبيقك دون الانغماس في إصلاح الأخطاء أو رموز القوالب.

توجهك هذه الدليل خلال عملية دمج واجهات برمجة التطبيقات الخاصة بـ DeepSeek في تطبيقك، مستفيدًا من منصة واجهة برمجة تطبيقات بديهية - Apidog لاختبار وتصحيح وإنتاج مقتطفات من الشيفرة الجاهزة للاستخدام في دقائق. سواء كنت تبني خلفية بلغة بايثون أو واجهة أمامية بلغة جافا سكريبت، بنهاية هذه المقالة، سيكون لديك دمج كامل لوظائف واجهة برمجة التطبيقات مع الحد الأدنى من الجهد.


متطلبات مسبقة

  1. حساب DeepSeek (قم بالتسجيل هنا).
  2. معرفة أساسية بواجهات برمجة تطبيقات REST والبرمجة (بايثون / جافا سكريبت مستخدمة هنا).
  3. أداة مثل Apidog لاختبار واجهات برمجة التطبيقات.

الخطوة 1: احصل على مفتاح واجهة برمجة التطبيقات لـ DeepSeek

كل طلب واجهة برمجة تطبيقات يتطلب مصادقة. إليك كيفية الحصول على مفتاحك:

  1. قم بتسجيل الدخول إلى حسابك في DeepSeek.
  2. انتقل إلى مفاتيح واجهة برمجة التطبيقات ضمن إعدادات حسابك.
  3. انقر على إنشاء مفتاح API جديد ونسخه.

⚠️ هام: تعامل مع هذا المفتاح وكأنه كلمة مرور. لا تعرضه أبدًا في الشيفرة على جانب العميل أو في مستودعات عامة.


الخطوة 2: اختبار واجهة برمجة التطبيقات لـ DeepSeek

توفر وثائق واجهة برمجة التطبيقات الخاصة بـ DeepSeek التي أنشأتها Apidog ملعبًا تفاعليًا لاختبار نقاط النهاية مباشرةً على الوثائق دون كتابة سطر واحد من الشيفرة. إليك كيفية القيام بذلك:

1. افتح الوثائق: انتقل إلى نقطة النهاية إنشاء إكمال دردشة.

DeepSeek chat completion APIs

2. قم بالمصادقة:

  • انقر على جربها أو تشغيل في Apidog.
  • على لوحة الطلب المنبثقة، انتقل إلى قسم الرؤوس أو المصادقة، وأضف مفتاح واجهة برمجة التطبيقات الخاص بك:
Authorization: Bearer YOUR_API_KEY  
Adding the DeepSeek API keys

3. صمم طلبك:

في جسم الطلب، حدد النموذج (مثل deepseek-chat) وأضف رسالة:

{
  "model": "deepseek-chat",
  "messages": [
    {"role": "user", "content": "اشرح الحوسبة الكمية في 3 جمل."}
  ]
}
crafting DeepSeek API request

4. أرسل الطلب: انقر على إرسال وشاهد الاستجابة في الوقت الحقيقي.

getting DeekSeek response in real time

لماذا هذا مهم: اختبار واجهات برمجة التطبيقات يدويًا يساعدك على التحقق من صحة هياكل الحمولة والتعامل مع الأخطاء قبل كتابة شيفرة الدمج.


الخطوة 3: إنشاء مقتطفات الشيفرة لكتلتك

يسمح لك Apidog بـ إنشاء شيفرات برمجية جاهزة لمختلف اللغات والأطر بناءً على وثائق واجهات برمجة التطبيقات التي يمكن استخدامها مباشرة في كتل البرمجة الخاصة بك. إليك كيفية القيام بذلك:

1. افتح مشروع DeepSeek على تطبيق Apidog:

  • لفتح مشروع واجهة برمجة التطبيقات لـ DeepSeek في تطبيق الويب Apidog، انقر ببساطة على "تشغيل في Apidog" في الزاوية العليا اليمنى من الوثائق.
Click on "Run in Apidog" to run the project on Apidog app
  • نصيحة احترافية: لفتح المشروع في تطبيق سطح مكتب Apidog، انقر على "فتح على سطح المكتب" في الزاوية العليا اليمنى بعد ذلك.

2. اختر لغتك:

  • على صفحة وثائق واجهة برمجة التطبيقات لـ DeepSeek، انقر على زر </> إنشاء شيفرة.
generating code directly from API documentation created by Apidog
  • اختر لغتك (مثل بايثون، جافا سكريبت، جور، والمزيد).
choose the language to generate the codes

3. انسخ والصق الشيفرة:

  • لـ بايثون (باستخدام requests):
import requests
import json

url = "https://api.deepseek.com/chat/completions"

payload = json.dumps({
   "messages": [
      {
         "content": "أنت مساعد مفيد",
         "role": "system"
      },
      {
         "content": "مرحباً",
         "role": "user"
      }
   ],
   "model": "deepseek-chat",
   "frequency_penalty": 0,
   "max_tokens": 2048,
   "presence_penalty": 0,
   "response_format": {
      "type": "text"
   },
   "stop": None,
   "stream": False,
   "stream_options": None,
   "temperature": 1,
   "top_p": 1,
   "tools": None,
   "tool_choice": "none",
   "logprobs": False,
   "top_logprobs": None
})
headers = {
   'Authorization': 'Bearer {{API_KEY}}',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
  • لـ جافا سكريبت (باستخدام fetch):
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{API_KEY}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
   "messages": [
      {
         "content": "أنت مساعد مفيد",
         "role": "system"
      },
      {
         "content": "مرحباً",
         "role": "user"
      }
   ],
   "model": "deepseek-chat",
   "frequency_penalty": 0,
   "max_tokens": 2048,
   "presence_penalty": 0,
   "response_format": {
      "type": "text"
   },
   "stop": null,
   "stream": false,
   "stream_options": null,
   "temperature": 1,
   "top_p": 1,
   "tools": null,
   "tool_choice": "none",
   "logprobs": false,
   "top_logprobs": null
});

var requestOptions = {
   method: 'POST',
   headers: myHeaders,
   body: raw,
   redirect: 'follow'
};

fetch("https://api.deepseek.com/chat/completions", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));

4. خصص الشيفرة: استبدل YOUR_API_KEY وقم بتعديل محتوى الرسالة.


الخطوة 4: دمجها في تطبيقك

لنقم ببناء تطبيق CLI بسيط بلغة بايثون يستخدم واجهة برمجة التطبيقات لـ DeepSeek للإجابة على أسئلة المستخدمين.

إعداد المشروع

1. أنشئ دليلًا وقم بتثبيت التبعيات:

mkdir deepseek-cli && cd deepseek-cli  
pip install requests python-dotenv  

2. قم بتخزين مفتاح واجهة برمجة التطبيقات الخاص بك بشكل آمن باستخدام .env:

echo "DEEPSEEK_API_KEY=your_api_key_here" > .env  

تنفيذ الشيفرة

import argparse
import asyncio
import json
import os
import sys
from typing import AsyncGenerator, Generator

import httpx
import requests


async def async_deepseek(
    api_key: str,
    model: str,
    messages: list,
    temperature: float
) -> AsyncGenerator[str, None]:
    """
    مولد غير متزامن لبث استجابات DeepSeek
    """
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}",
    }
    data = {
        "model": model,
        "messages": messages,
        "temperature": temperature,
        "stream": True,
    }

    async with httpx.AsyncClient() as client:
        async with client.stream(
            "POST",
            "https://api.deepseek.com/v1/chat/completions",
            headers=headers,
            json=data,
        ) as response:
            response.raise_for_status()
            async for line in response.aiter_lines():
                if line.startswith("data: "):
                    try:
                        json_data = json.loads(line[6:])
                        if chunk := json_data["choices"][0]["delta"].get("content", ""):
                            yield chunk
                    except json.JSONDecodeError:
                        pass


def sync_deepseek(
    api_key: str,
    model: str,
    messages: list,
    temperature: float
) -> Generator[str, None, None]:
    """
    مولد متزامن لبث استجابات DeepSeek
    """
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}",
    }
    data = {
        "model": model,
        "messages": messages,
        "temperature": temperature,
        "stream": True,
    }

    with requests.post(
        "https://api.deepseek.com/v1/chat/completions",
        headers=headers,
        json=data,
        stream=True,
    ) as response:
        response.raise_for_status()
        for line in response.iter_lines():
            if line:
                decoded_line = line.decode("utf-8")
                if decoded_line.startswith("data: "):
                    try:
                        json_data = json.loads(decoded_line[6:])
                        if chunk := json_data["choices"][0]["delta"].get("content", ""):
                            yield chunk
                    except json.JSONDecodeError:
                        pass


def main():
    parser = argparse.ArgumentParser(
        description="عميل CLI لـ DeepSeek - تحدث مع نماذج DeepSeek"
    )
    parser.add_argument(
        "prompt",
        type=str,
        help="رسالتك لإرسالها إلى DeepSeek"
    )
    parser.add_argument(
        "--model",
        type=str,
        default="deepseek-chat",
        help="النموذج لاستخدامه (افتراضي: deepseek-chat)"
    )
    parser.add_argument(
        "--temperature",
        type=float,
        default=0.7,
        help="معامل درجة الحرارة (افتراضي: 0.7)"
    )
    parser.add_argument(
        "--async-mode",
        action="store_true",
        help="استخدم الوضع غير المتزامن (يتطلب Python 3.7+)"
    )
    args = parser.parse_args()

    api_key = os.getenv("DEEPSEEK_API_KEY")
    if not api_key:
        print("خطأ: اضبط مفتاح واجهة برمجة التطبيقات في متغير البيئة DEEPSEEK_API_KEY")
        sys.exit(1)

    messages = [{"role": "user", "content": args.prompt}]

    try:
        if args.async_mode:
            async def run_async():
                try:
                    async for chunk in async_deepseek(
                        api_key=api_key,
                        model=args.model,
                        messages=messages,
                        temperature=args.temperature
                    ):
                        print(chunk, end="", flush=True)
                    print()
                except httpx.HTTPStatusError as e:
                    print(f"\nحدث خطأ في HTTP: {e.response.status_code} {e.response.reason_phrase}")
                except Exception as e:
                    print(f"\nحدث خطأ: {str(e)}")

            asyncio.run(run_async())
        else:
            try:
                for chunk in sync_deepseek(
                    api_key=api_key,
                    model=args.model,
                    messages=messages,
                    temperature=args.temperature
                ):
                    print(chunk, end="", flush=True)
                print()
            except requests.exceptions.HTTPError as e:
                print(f"\nحدث خطأ في HTTP: {e.response.status_code} {e.response.reason_phrase}")
            except Exception as e:
                print(f"\nحدث خطأ: {str(e)}")

    except KeyboardInterrupt:
        print("\n\nتم مقاطعة العملية من قبل المستخدم")
        sys.exit(0)


if __name__ == "__main__":
    main()

تشغيل التطبيق

اكتب سؤالاً (مثل، "ما هي عاصمة فرنسا؟") وانظر الاستجابة!


الخطوة 5: التعامل مع الأخطاء وحالات الحافة

يمكن أن تفشل واجهات برمجة التطبيقات بسبب قيود الاستخدام، مفاتيح غير صالحة، أو مشاكل في الشبكة. قم بتنفيذ معالجة أخطاء قوية:

1. تحقق من رموز حالة HTTP:

  • 401 غير مصرح: مفتاح واجهة برمجة التطبيقات غير صالح.
  • 429 عدد الطلبات كبير جدًا: تم تجاوز الحد الأقصى للطلبات.
  • 500 خطأ داخلي في الخادم: مشكلة من جانب الخادم.

2. آليات إعادة المحاولة:

from time import sleep

def get_deepseek_response(prompt, retries=3):
    # ... existing code ...
    except requests.exceptions.RequestException as e:
        if retries > 0:
            sleep(2)
            return get_deepseek_response(prompt, retries - 1)
        else:
            return f"خطأ: {str(e)}"

3. تحقق من المدخلات:
تأكد من أن الرسائل ضمن حدود الرموز ومهيئة بشكل صحيح.


الخطوة 6: تحسين للإنتاج

  1. تخزين الاستجابات في الذاكرة المؤقتة: استخدم Redis أو Memcached لتخزين الاستفسارات المتكررة.
  2. مراقبة الاستخدام: تتبع مكالمات واجهة برمجة التطبيقات لتجنب تجاوز الحصص.
  3. المعالجة غير المتزامنة: لتطبيقات عالية الإنتاجية، استخدم مكتبات غير متزامنة مثل aiohttp (بايثون) أو axios (جافا سكريبت).

استنتاج

لا يجب أن يكون دمج واجهات برمجة التطبيقات لـ DeepSeek في تطبيقك مضيعة للوقت. من خلال استخدام الوثائق التفاعلية لاختبار نقاط النهاية، وتوليد الشيفرة، وتصحيح الأخطاء في الوقت الحقيقي، يمكنك إطلاق ميزات معززة بالذكاء الاصطناعي في ساعات - وليس أيام.

المثال أعلاه هو فقط قمة الجليد. مع نماذج DeepSeek، يمكنك بناء أي شيء من مولدات المحتوى التلقائية إلى المعلمين المدعومين بالذكاء الاصطناعي. الآن بعد أن لديك المخطط، انطلق و حوّل تطبيقك إلى قوة في مجال الذكاء الاصطناعي!