• בלוג
  • יום 2 - קריאת API ראשונה למודל שפה גדול

יום 2 - קריאת API ראשונה למודל שפה גדול

01/10/2025

הבסיס של כל מערכת אג'נטית היא היכולת לפנות למודל שפה גדול ולקבל תשובה או יותר נכון "השלמה". בפוסט זה נראה איך לפנות למודל שפה גדול דרך הספריה openai-agents-sdk.

1. ספריות גישה למודלים

לפני שניגש לקוד צריך לשאול - למה דרך ספריה? ואם כבר ספריה למה דווקא ספריה מבית היוצר של OpenAI? כל חברות ה AI מציעות את שירותיהן בתשלום דרך ממשק REST API. אפשר לגשת אליהן מכל לקוח שמדבר HTTP. בנוסף יש אינספור מוצרי קוד פתוח שעוטפים את הגישה לאותם הממשקים.

הסיבה שלא נרצה להשתמש בממשק ה REST API הבסיסי כדי לדבר עם ספקי המודלים שלנו היא שכל ספק בנה ממשק קצת אחרת. למשל בשביל לקבל השלמה מ OpenAI צריך לפנות לנתיב:

https://api.openai.com/v1/chat/completions

אבל בשביל לקבל השלמה ממודל של אנטרופיק צריך לפנות לנתיב:

https://api.anthropic.com/v1/messages

כשפונים ל OpenAI אנחנו שולחים מערך של הודעות שלכל הודעה יש role ו content, אבל אם נפנה ל Gemini נצטרך להעביר מערך של parts כשלכל part יש text. הרעיון עצמו אצל כל הספקים זהה אבל המימושים השונים גורמים לזה שאם נעבוד עם ממשק ה REST API נצטרך לבצע שינויים משמעותיים בקוד כל פעם שנרצה להחליף ספק או מודל.

ספריות הגישה בקוד פתוח מאפשרות לכתוב פעם אחת את קוד ה"שאלה" והספריה כבר מתאימה את הקוד לכל מודל שנבחר. לדוגמה הספריה LiteLLM מאפשרת לי לכתוב שורת פייתון אחת כדי לקבל השלמת טקסט:

response = completion(
  model="openai/gpt-4o",
  messages=[{ "content": "Hello, how are you?","role": "user"}]
)

וכשרוצים לעבוד עם מודל אחר פשוט משנים את המודל. הספריה כבר דואגת להעביר את הפרמטרים ולבחור את ה URL בצורה שמתאימה לספק ה AI.

הרמה הבאה של אבסטרקציה היא ספריות שלא רק מאפשרות גישה למודלים אלא גם מכתיבות את מבנה התוכנית ומספקות מימושים לתבניות נפוצות בכתיבת מערכות משולבות AI. ספריות כאלה כוללות:

  1. LangGraph - ספריית פייתון שעוזרת לבנות תוכנית משולבת AI במבנה של גרף.
  2. CrewAI - ספריית פייתון שמאפשרת לחשוב על התוכנית שלנו בתור צוות של סוכני AI שמדברים ביניהם.
  3. Vercel AI SDK - ספריית עבודה עם סוכני AI שגם מטפלת בחיבור לריאקט ועוזרת בבניית ממשק משתמש לבוטים.
  4. Autogen - פריימוורק לפיתוח ארכיטקטורה מרובת סוכנים מבית מייקרוסופט

ויש עוד המון וכל הזמן יוצאות ספריות חדשות. האמת היא שתחום פיתוח מערכות אג'נטיות הוא עדיין מאוד צעיר והתעשייה מחפשת רעיונות, כלים וספריות.

בסידרת פוסטים זו אני אראה את כל הדוגמאות עם הספריה OpenAI Agents SDK. בחרתי בספריה זו מהסיבות הבאות:

  1. היא נכתבה על ידי OpenAI ומשלבת הרבה תבניות טובות בצורה פשוטה לשימוש.
  2. היא כתובה גם בטייפסקריפט וגם ב Python ומאפשרת פיתוח מערכות בצד שרת וגם בצד לקוח.
  3. היא לא עמוסה באבסטרקציות אלא כוללת יחסית מעט מבנים בסיסיים.

אל דאגה, למרות שהספריה מבית OpenAI אפשר להשתמש בה כדי לדבר עם מודלים של כל החברות.

2. קריאת ה AI הראשונה שלי בפייתון

נכתוב את הקוד הבא בתוך תוכנית פייתון:

import asyncio
from agents import Agent, Runner
from agents.extensions.models.litellm_model import LitellmModel
import os

async def main():
    agent = Agent(
        name="Assistant",
        model=LitellmModel(model="github/gpt-4.1", api_key=os.environ["GITHUB_TOKEN"]),
        instructions="You only respond in haikus.",
    )

    result = await Runner.run(agent, "Tell me about recursion in programming.")
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

הקוד די מסביר את עצמו ובואו נקרא אותו שורה אחר שורה:

  1. מתחילים ביבוא הספריות.
  2. ממשיכים להגדיר את הפונקציה הראשית main בתור פונקציית async.
  3. הפונקציה מתחילה בהגדרה של הסוכן - סוכן הוא אבסטרקציה שמייצגת קריאה אחת או מספר קריאות ל AI כדי לבצע משימה. מאפיין instructions של הסוכן כולל טקסט הוראות הפעלה לאותו סוכן, המודל קובע מה המודל בו משתמשים ו name הוא שם הסוכן.
  4. אחרי שיש לנו סוכן נוכל להריץ אותו עם פקודת Runner.run. הפקודה מקבלת את הסוכן ו prompt ויוצאת לדרך לבצע את המשימה. היא מחזירה את התוצאה יחד עם metadata לגבי מה שקרה.
  5. בסיום ה main אני מדפיס את הפלט.

3. הרצת התוכנית

בשביל להריץ את הקוד עלינו להתקין את החבילות וגם לקבל מפתח API ל OpenAI. את החבילות אני מתקין עם:

$ pip install "openai-agents" "openai-agents[litellm]"

ובדרך כלל נרצה לבצע את ההתקנה בתוך סביבה וירטואלית.

בדוגמת הקוד שלי השתמשתי במודל של גיטהאב, או יותר נכון במודל של OpenAI וניגשתי אליו דרך מערכת המודלים של גיטהאב. עשיתי זאת כדי לקבל גישה בחינם למודל לצורך בדיקות. בעצם OpenAI דורשים תשלום על שימוש במודל כבר מהטוקן הראשון ולכן שימוש ישיר במודל דרך ה API שלהם מצריך יצירת API Key והזנת פרטי אשראי באתר של OpenAI. אנחנו פה עדיין בשלב הלימוד ולכן עדיף להתנסות בלי לשלם. גיטהאב מוכנים לשלם על הטוקנים שלכם בתקופת הלימוד עם הגבלה של כמה עשרות בקשות ביום. בשביל להריץ את הקוד דרכם נצטרך להוציא מפתח גישה דרך הקישור הזה:

https://github.com/settings/personal-access-tokens

לוחצים על הכפתור Generate New Token ומקפידים לסמן גישת קריאה ל Github Models. את הטוקן שקיבלתם מגדירים בתור משתנה סביבה GITHUB_TOKEN בעת הרצת תוכנית הפייתון.

4. קריאת ה API הראשונה שלי ב TypeScript

אם צד השרת שלכם כתוב ב TypeScript או JavaScript תשמחו לשמוע שיש מימוש מקביל לספריית ה OpenAI Agents SDK בטייפסקריפט. גם מימוש זה מאפשר להשתמש גם במודלים אחרים אבל לצערי נכון לכתיבת הפוסט החיבור למודלים של גיטהאב עדיין לא עובד. כאן אפשר לראות רשימה של כל ה Providers שכן אפשר לשלב:

https://ai-sdk.dev/providers/ai-sdk-providers

מאחר ולא היה לי מודל חינם לניסויים לקחתי את המודל בתשלום של OpenAI וכתבתי את התוכנית הבאה:

import { Agent, run } from 'npm:@openai/agents';

const agent = new Agent({
  name: 'History Tutor',
  model: 'gpt-4.1-nano',
  instructions:
    'You provide assistance with historical queries. Explain important events and context clearly.',
});

const result = await run(agent, 'When did sharks first appear?');

console.log(result.finalOutput);

בשביל להריץ אותה הגדרתי במשתנה הסביבה OPENAI_API_KEY את מפתח הגישה של OpenAI שהוצאתי (בתשלום). אתם יכולים גם לקבל אחד בקישור הזה:

https://platform.openai.com/api-keys

אחרי שתגדירו תוכלו להריץ את קוד הטייפסקריפט עם:

$ deno run -A main.ts

5. עכשיו אתם

רוצים להמשיך לחקור את תוכניות הדוגמה? הנה שני כיוונים: 1. התבוננו במידע שפקודת run מחזירה - מה אתם יכולים ללמוד על הבקשה? 2. חברו את הסוכן למודלים אחרים ושימו לב לתשובות השונות שכל מודל מחזיר.