انتقل إلى المحتوى الرئيسي

واجهات البرمجة والدمج

تعلم كيفية دمج النماذج اللغوية في تطبيقاتك باستخدام واجهات البرمجة (APIs) والمكتبات المختلفة.

استخدام Hugging Face Transformers

مكتبة Transformers هي الطريقة الأكثر شيوعًا للتعامل مع النماذج اللغوية:

  • التثبيت والإعداد:

    pip install transformers
  • تحميل واستخدام النماذج:

    from transformers import AutoModelForCausalLM, AutoTokenizer

    # تحميل النموذج والمرمز
    model_name = "aubmindlab/aragpt2-medium"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(model_name)

    # توليد نص
    input_text = "أهلاً بك في عالم الذكاء الاصطناعي"
    inputs = tokenizer(input_text, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=100)
    result = tokenizer.decode(outputs[0], skip_special_tokens=True)

    print(result)
  • خيارات التحسين:

    • استخدام device='cuda' للتشغيل على وحدة معالجة الرسومات
    • تطبيق التكميم باستخدام load_in_8bit=True أو bitsandbytes
    • تقنيات الذاكرة المؤقتة لتسريع التوليد المتكرر

مكتبات توليد النصوص

مكتبات متخصصة لتشغيل النماذج اللغوية وتوليد النصوص:

  • llama-cpp-python:

    from llama_cpp import Llama

    # تحميل نموذج بصيغة GGUF
    llm = Llama(
    model_path="path/to/model.gguf",
    n_ctx=2048,
    n_gpu_layers=-1 # استخدام كل طبقات GPU المتاحة
    )

    # توليد نص
    output = llm(
    "اكتب مقالاً عن أهمية الذكاء الاصطناعي",
    max_tokens=512,
    temperature=0.7,
    top_p=0.95,
    )

    print(output["choices"][0]["text"])
  • text-generation-webui API:

    import requests

    # استدعاء واجهة برمجة التطبيقات المحلية
    url = "http://localhost:5000/api/v1/generate"
    headers = {"Content-Type": "application/json"}
    data = {
    "prompt": "اكتب قصة قصيرة عن",
    "max_length": 200,
    "temperature": 0.7,
    }

    response = requests.post(url, headers=headers, json=data)
    result = response.json()["results"][0]["text"]

    print(result)

دمج النماذج اللغوية في التطبيقات

استراتيجيات لدمج النماذج اللغوية في مختلف أنواع التطبيقات:

  • تطبيقات الويب:

    from flask import Flask, request, jsonify
    from transformers import pipeline

    app = Flask(__name__)

    # إعداد خط أنابيب للنموذج اللغوي
    generator = pipeline('text-generation', model='aubmindlab/aragpt2-base')

    @app.route('/generate', methods=['POST'])
    def generate_text():
    data = request.json
    prompt = data.get('prompt', '')
    max_length = data.get('max_length', 100)

    result = generator(prompt, max_length=max_length)

    return jsonify({'generated_text': result[0]['generated_text']})

    if __name__ == '__main__':
    app.run(debug=True)
  • تطبيقات سطح المكتب:

    import tkinter as tk
    from tkinter import scrolledtext
    import threading
    from transformers import pipeline

    class AIAssistantApp:
    def __init__(self, master):
    self.master = master
    master.title("مساعد الذكاء الاصطناعي")

    # إعداد النموذج
    self.generator = pipeline('text-generation', model='aubmindlab/aragpt2-base')

    # إنشاء واجهة المستخدم
    self.text_area = scrolledtext.ScrolledText(master, width=60, height=15)
    self.text_area.pack(pady=10)

    self.prompt_entry = tk.Entry(master, width=60)
    self.prompt_entry.pack(pady=10)

    self.generate_button = tk.Button(master, text="توليد النص", command=self.generate)
    self.generate_button.pack(pady=10)

    def generate(self):
    prompt = self.prompt_entry.get()
    self.generate_button.config(state=tk.DISABLED)

    # تنفيذ التوليد في خيط منفصل لتجنب تجميد الواجهة
    threading.Thread(target=self._generate_text, args=(prompt,)).start()

    def _generate_text(self, prompt):
    result = self.generator(prompt, max_length=100)
    self.text_area.delete(1.0, tk.END)
    self.text_area.insert(tk.END, result[0]['generated_text'])
    self.generate_button.config(state=tk.NORMAL)

    if __name__ == "__main__":
    root = tk.Tk()
    app = AIAssistantApp(root)
    root.mainloop()
  • خدمات الواجهة الخلفية (Backend Services):

    # استخدام FastAPI لإنشاء واجهة برمجة تطبيقات RESTful
    from fastapi import FastAPI, BackgroundTasks
    from pydantic import BaseModel
    import llama_cpp

    app = FastAPI()

    # إعداد النموذج
    llm = llama_cpp.Llama(
    model_path="path/to/model.gguf",
    n_ctx=2048,
    n_gpu_layers=-1
    )

    class GenerationRequest(BaseModel):
    prompt: str
    max_tokens: int = 256
    temperature: float = 0.7

    class GenerationResponse(BaseModel):
    text: str

    @app.post("/generate", response_model=GenerationResponse)
    async def generate_text(request: GenerationRequest):
    output = llm(
    request.prompt,
    max_tokens=request.max_tokens,
    temperature=request.temperature
    )

    return GenerationResponse(text=output["choices"][0]["text"])