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

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

تعلم كيفية دمج النماذج اللغوية في تطبيقاتك باستخدام واجهات البرمجة (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"])