בעולם הפיתוח המודרני, שילוב בינה מלאכותית באפליקציות הוא סטנדרט חדש. יחידת לימוד זו תיקח אתכם למסע מעמיק להבנת עולם ה-API של מודלי AI (כגון OpenAI, Anthropic ועוד). נלמד כיצד המערכת עובדת, איך משיגים גישה, כיצד בונים בקשות תקינות, ואיך מטפלים בתשובות ובשגיאות בצורה מקצועית ומאובטחת. היחידה בנויה על פי עקרונות בלום (Bloom's Taxonomy) כדי להבטיח למידה מדורגת ויעילה.
הבנת הקונספט של API בהקשר של מודלי שפה ובינה מלאכותית.
רכישת מיומנות ביצירת מפתחות גישה (API Keys) ושמירה על אבטחת מידע.
יכולת לבנות בקשות HTTP (Requests) עם פרמטרים מתקדמים.
ניתוח תשובות השרת וטיפול בשגיאות נפוצות.
יישום פרקטיקות נכונות לחיסכון בעלויות ושיפור ביצועים.
לפני שנצלול לקוד, חשוב להבין מהו API בהקשר של AI. ממשק תכנות יישומים (API) משמש כמתווך בין התוכנה שלכם (הלקוח) לבין המודל המאומן שיושב בשרתים מרוחקים (השרת). במקום להריץ מודל כבד על המחשב שלכם, אתם שולחים 'הנחיה' (Prompt) דרך האינטרנט, והשרת מחזיר את התוצאה. זה מאפשר לכל מפתח לשלב יכולות על-אנושיות באפליקציות פשוטות.
הצעד הראשון המעשי הוא קבלת גישה. זה נעשה באמצעות מפתח API (API Key). מפתח זה הוא כמו סיסמה סודית שאומרת לשרת מי אתם ומאפשרת לו לחייב את חשבונכם. כלל הברזל באבטחה: לעולם אל תחשפו את המפתח בקוד צד-לקוח (Client Side) או במאגרים ציבוריים (כמו GitHub). יש להשתמש במשתני סביבה (.env).
# קובץ .env
OPENAI_API_KEY="sk-proj-your-secret-key-here"
ANTHROPIC_API_KEY="sk-ant-your-secret-key-here"
# Python - טעינת המפתחות
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
יצירת חשבון ב-OpenAI, Anthropic או ספק אחר
גישה ללוח הבקרה ויצירת מפתח חדש עם הרשאות מתאימות
שמירת המפתח בקובץ .env ואי-העלאה למאגר קוד
וידוא שהמפתח נגיש רק לקוד שרת ולא לדפדפן
כדי לקבל תשובה טובה, צריך לדעת איך לבקש. בקשת POST טיפוסית ל-AI API מורכבת מ-Headers (שם נמצא המפתח) ו-Body. ה-Body מכיל את המודל הנבחר (למשל gpt-4), את ההודעות (Messages) ואת הפרמטרים ששולטים על היצירתיות, כמו Temperature. הבנת הפרמטרים הללו קריטית לקבלת תוצאות מדויקות.
import requests
import json
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "אתה עוזר מועיל ומקצועי"
},
{
"role": "user",
"content": "הסבר לי מה זה machine learning"
}
],
"temperature": 0.7,
"max_tokens": 1000
}
response = requests.post(url, headers=headers, json=payload)
שולט על רמת היצירתיות. 0 = צפוי ועקבי, 1 = יצירתי ומגוון
מגביל את אורך התשובה. 1 token ≈ 0.75 מילים באנגלית
מגדיר את התנהגות המודל והקשר כללי לשיחה
מכיל את השאלה או הבקשה הספציפית מהמשתמש
לאחר השליחה, השרת מחזיר תשובה. במקרה הטוב, נקבל אובייקט JSON עם הטקסט שיצר המודל. במקרה הפחות טוב, נקבל שגיאה. שגיאות נפוצות כוללות 401 (בעיית אימות), 429 (חריגה ממכסת הבקשות - Rate Limit), או 500 (שגיאת שרת). מפתח מקצועי חייב לכתוב קוד שיודע להתמודד עם שגיאות אלו, למשל על ידי ניסיון חוזר (Retry) או המתנה.
import time
import random
def make_api_request_with_retry(url, headers, payload, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
# הצלחה - חילוץ התוכן
data = response.json()
return data['choices'][0]['message']['content']
elif response.status_code == 429:
# Rate limit - המתנה והמשך
wait_time = (2 ** attempt) + random.uniform(0, 1)
print(f"Rate limited. Waiting {wait_time:.2f} seconds...")
time.sleep(wait_time)
elif response.status_code == 401:
raise Exception("Invalid API key or insufficient permissions")
else:
raise Exception(f"API error: {response.status_code} - {response.text}")
except requests.exceptions.RequestException as e:
print(f"Network error on attempt {attempt + 1}: {e}")
if attempt == max_retries - 1:
raise
raise Exception("Max retries exceeded")
השתמש במודל הקטן ביותר שמספק את הדיוק הנדרש
שמור רק על ההיסטוריה הרלוונטית לשיחה
שמור תשובות לשאלות נפוצות במטמון
1. מהו המקום המאובטח ביותר לשמור בו את ה-API Key?
2. איזה קוד שגיאה HTTP מעיד על חריגה ממכסת הבקשות (Rate Limit)?
3. מה יקרה אם נגדיר את פרמטר ה-Temperature ל-0?
4. מה תפקיד ה-Headers בבקשת API?