להצגה ב-AI מבית Google | הפעלה ב-Google Colab | הצגת המקור ב-GitHub |
המדריך למתחילים הזה מדגים איך משתמשים ב-Python SDK ל-Gemini API, מעניקה גישה למודלים גדולים של שפה (LLM) של Gemini של Google. במדריך למתחילים הזה, תוכלו ללמוד איך:
- כדי להשתמש ב-Gemini, צריך להגדיר את סביבת הפיתוח ואת הגישה ל-API.
- יצירת תשובות טקסט מערכי קלט של טקסט.
- ליצור תשובות טקסט מערכי קלט רב-אופניים (טקסט ותמונות).
- אפשר להשתמש ב-Gemini לשיחות מרובות תורות (בצ'אט).
- להשתמש בהטמעות עבור מודלים גדולים של שפה.
דרישות מוקדמות
ניתן להריץ את המדריך למתחילים הזה בGoogle Colab, שמריצה את ה-notebook הזה ישירות בדפדפן ולא מחייבת של הסביבה.
לחלופין, כדי להשלים את המדריך למתחילים הזה באופן מקומי, ודאו שהפיתוח הסביבה עומדת בדרישות הבאות:
- Python 3.9 ואילך
- התקנה של
jupyter
כדי להריץ את ה-notebook.
הגדרה
התקנת ה-Python SDK
ה-Python SDK של Gemini API כלול
חבילה של google-generativeai
.
מתקינים את התלות באמצעות PIP:
pip install -q -U google-generativeai
ייבוא חבילות
מייבאים את החבילות הנדרשות.
import pathlib
import textwrap
import google.generativeai as genai
from IPython.display import display
from IPython.display import Markdown
def to_markdown(text):
text = text.replace('•', ' *')
return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))
# Used to securely store your API key
from google.colab import userdata
הגדרה של מפתח API
כדי להשתמש ב-Gemini API, קודם צריך לקבל מפתח API. אם אין לכם עדיין מפתח ב-Google AI Studio? אתם יכולים ליצור מפתח בלחיצה אחת.
ב-Colab, מוסיפים את המפתח למנהל הסודות מתחת לכיתוב '🔑' בחלונית הימנית.
נותנים למכשיר את השם GOOGLE_API_KEY
.
אחרי שמקבלים את מפתח ה-API, מעבירים אותו ל-SDK. תוכל לעשות זאת בשתי דרכים:
- צריך להכניס את המפתח למשתנה הסביבה
GOOGLE_API_KEY
(ה-SDK ישתמש וגם לאסוף אותו משם באופן אוטומטי). - צריך להעביר את המפתח אל
genai.configure(api_key=...)
# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
הצגת רשימה של מודלים
עכשיו הכול מוכן ואפשר להתחיל לשלוח קריאה ל-Gemini API. יש להשתמש ב-list_models
כדי לראות את הזמינות
המודלים של Gemini:
gemini-1.5-flash
: המודל מרובה המודלים המהיר ביותרgemini-1.5-pro
: המודל הכי משוכלל והכי חכם שלנו בכמה מודלים
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
יצירת טקסט מערכי קלט של טקסט
להנחיות עם טקסט בלבד, צריך להשתמש במודל Gemini 1.5 או מודל Gemini 1.0 Pro:
model = genai.GenerativeModel('gemini-1.5-flash')
השיטה generate_content
יכולה לטפל במגוון רחב של תרחישים לדוגמה, כולל
צ'אט עם מספר פניות וקלט מרובה מצבים, בהתאם למודל
נתמך. המודלים הזמינים תומכים רק בטקסט ובתמונות בתור קלט, וכן טקסט
כפלט.
במקרה הפשוט ביותר, אפשר להעביר מחרוזת פרומפט
GenerativeModel.generate_content
method:
%%time
response = model.generate_content("What is the meaning of life?")
CPU times: user 110 ms, sys: 12.3 ms, total: 123 ms Wall time: 8.25 s
במקרים פשוטים, ה-accessor של response.text
הוא כל מה שצריך. להצגה
בפורמט Markdown, צריך להשתמש בפונקציה to_markdown
:
to_markdown(response.text)
The query of life's purpose has perplexed people across centuries, cultures, and continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences. 1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one's physical and mental health, and pursuing personal goals and interests. 2. **Meaningful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing. 3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, pushing one's boundaries, confronting personal obstacles, and evolving as a person. 4. **Ethical and Moral Behavior:** Some believe that the goal of life is to act ethically and morally. This might entail adhering to one's moral principles, doing the right thing even when it is difficult, and attempting to make the world a better place. 5. **Spiritual Fulfillment:** For some, the purpose of life is connected to spiritual or religious beliefs. This might entail seeking a connection with a higher power, practicing religious rituals, or following spiritual teachings. 6. **Experiencing Life to the Fullest:** Some individuals believe that the goal of life is to experience all that it has to offer. This might entail traveling, trying new things, taking risks, and embracing new encounters. 7. **Legacy and Impact:** Others believe that the purpose of life is to leave a lasting legacy and impact on the world. This might entail accomplishing something noteworthy, being remembered for one's contributions, or inspiring and motivating others. 8. **Finding Balance and Harmony:** For some, the purpose of life is to find balance and harmony in all aspects of their lives. This might entail juggling personal, professional, and social obligations, seeking inner peace and contentment, and living a life that is in accordance with one's values and beliefs. Ultimately, the meaning of life is a personal journey, and different individuals may discover their own unique purpose through their experiences, reflections, and interactions with the world around them.
אם ה-API לא הצליח להחזיר תוצאה, משתמשים ב-
GenerateContentResponse.prompt_feedback
כדי לראות אם ההודעה נחסמה עקב חששות בנוגע לבטיחות של ההנחיה.
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
Gemini יכול ליצור כמה תשובות אפשריות להנחיה אחת. האלה
התשובות האפשריות נקראות candidates
, ואפשר לבדוק אותן כדי לבחור
הכי מתאים בתור התשובה.
הצגת התשובות האפשריות עם
GenerateContentResponse.candidates
response.candidates
[ content { parts { text: "The query of life\'s purpose has perplexed people across centuries, cultures, and continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences.\n\n1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one\'s physical and mental health, and pursuing personal goals and interests.\n\n2. **Meaningful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing.\n\n3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, pushing one\'s boundaries, confronting personal obstacles, and evolving as a person.\n\n4. **Ethical and Moral Behavior:** Some believe that the goal of life is to act ethically and morally. This might entail adhering to one\'s moral principles, doing the right thing even when it is difficult, and attempting to make the world a better place.\n\n5. **Spiritual Fulfillment:** For some, the purpose of life is connected to spiritual or religious beliefs. This might entail seeking a connection with a higher power, practicing religious rituals, or following spiritual teachings.\n\n6. **Experiencing Life to the Fullest:** Some individuals believe that the goal of life is to experience all that it has to offer. This might entail traveling, trying new things, taking risks, and embracing new encounters.\n\n7. **Legacy and Impact:** Others believe that the purpose of life is to leave a lasting legacy and impact on the world. This might entail accomplishing something noteworthy, being remembered for one\'s contributions, or inspiring and motivating others.\n\n8. **Finding Balance and Harmony:** For some, the purpose of life is to find balance and harmony in all aspects of their lives. This might entail juggling personal, professional, and social obligations, seeking inner peace and contentment, and living a life that is in accordance with one\'s values and beliefs.\n\nUltimately, the meaning of life is a personal journey, and different individuals may discover their own unique purpose through their experiences, reflections, and interactions with the world around them." } role: "model" } finish_reason: STOP index: 0 safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE } ]
כברירת מחדל, המודל מחזיר תשובה אחרי השלמת כל היצירה. תהליך האימות. אפשר גם לשדר את התשובה בזמן יצירתה. יחזיר מקטעים של התשובה ברגע שהם נוצרו.
כדי להציג את התשובות באופן שוטף, אפשר להשתמש ב-GenerativeModel.generate_content(...,
stream=True)
.
%%time
response = model.generate_content("What is the meaning of life?", stream=True)
CPU times: user 102 ms, sys: 25.1 ms, total: 128 ms Wall time: 7.94 s
for chunk in response:
print(chunk.text)
print("_"*80)
The query of life's purpose has perplexed people across centuries, cultures, and ________________________________________________________________________________ continents. While there is no universally recognized response, many ideas have been put forth, and the response is frequently dependent on individual ideas, beliefs, and life experiences ________________________________________________________________________________ . 1. **Happiness and Well-being:** Many individuals believe that the goal of life is to attain personal happiness and well-being. This might entail locating pursuits that provide joy, establishing significant connections, caring for one's physical and mental health, and pursuing personal goals and aspirations. 2. **Meaning ________________________________________________________________________________ ful Contribution:** Some believe that the purpose of life is to make a meaningful contribution to the world. This might entail pursuing a profession that benefits others, engaging in volunteer or charitable activities, generating art or literature, or inventing. 3. **Self-realization and Personal Growth:** The pursuit of self-realization and personal development is another common goal in life. This might entail learning new skills, exploring one's interests and abilities, overcoming obstacles, and becoming the best version of oneself. 4. **Connection and Relationships:** For many individuals, the purpose of life is found in their relationships with others. This might entail building ________________________________________________________________________________ strong bonds with family and friends, fostering a sense of community, and contributing to the well-being of those around them. 5. **Spiritual Fulfillment:** For those with religious or spiritual beliefs, the purpose of life may be centered on seeking spiritual fulfillment or enlightenment. This might entail following religious teachings, engaging in spiritual practices, or seeking a deeper understanding of the divine. 6. **Experiencing the Journey:** Some believe that the purpose of life is simply to experience the journey itself, with all its joys and sorrows. This perspective emphasizes embracing the present moment, appreciating life's experiences, and finding meaning in the act of living itself. 7. **Legacy and Impact:** For others, the goal of life is to leave a lasting legacy or impact on the world. This might entail making a significant contribution to a particular field, leaving a positive mark on future generations, or creating something that will be remembered and cherished long after one's lifetime. Ultimately, the meaning of life is a personal and subjective question, and there is no single, universally accepted answer. It is about discovering what brings you fulfillment, purpose, and meaning in your own life, and living in accordance with those values. ________________________________________________________________________________
בזמן סטרימינג, חלק ממאפייני התגובה לא זמינים עד שחוזרים על עצמם על כל קטעי התשובה. אפשר לראות את הדוגמה הבאה:
response = model.generate_content("What is the meaning of life?", stream=True)
המאפיין prompt_feedback
פועל:
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
לעומת זאת, מאפיינים כמו text
לא:
try:
response.text
except Exception as e:
print(f'{type(e).__name__}: {e}')
IncompleteIterationError: Please let the response complete iteration before accessing the final accumulated attributes (or call `response.resolve()`)
יצירת טקסט מערכי קלט של תמונה וטקסט
ב-Gemini יש כמה מודלים שיכולים לטפל בקלט רב-אופני (Gemini 1.5 כדי שתוכלו להזין גם טקסט וגם תמונות. חשוב לבדוק את דרישות לגבי תמונות בהנחיות.
כשהקלט של ההנחיה כולל גם טקסט וגם תמונות, צריך להשתמש ב-Gemini 1.5 עם
שיטה GenerativeModel.generate_content
ליצירת פלט טקסט:
נוסיף תמונה:
curl -o image.jpg https://t0.gstatic.com/licensed-image?q=tbn:ANd9GcQ_Kevbk21QBRy-PgB4kQpS79brbmmEG7m3VOTShAn4PecDU5H5UxrJxE3Dw1JiaG17V88QIol19-3TM2wCHw
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 405k 100 405k 0 0 6982k 0 --:--:-- --:--:-- --:--:-- 7106k
import PIL.Image
img = PIL.Image.open('image.jpg')
img
משתמשים במודל Gemini 1.5 ומעבירים את התמונה למודל באמצעות generate_content
.
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(img)
to_markdown(response.text)
Chicken Teriyaki Meal Prep Bowls with brown rice, roasted broccoli and bell peppers.
כדי לספק גם טקסט וגם תמונות בהנחיה, מעבירים רשימה שמכילה את המחרוזות ותמונות:
response = model.generate_content(["Write a short, engaging blog post based on this picture. It should include a description of the meal in the photo and talk about my journey meal prepping.", img], stream=True)
response.resolve()
to_markdown(response.text)
Meal prepping is a great way to save time and money, and it can also help you to eat healthier. This meal is a great example of a healthy and delicious meal that can be easily prepped ahead of time. This meal features brown rice, roasted vegetables, and chicken teriyaki. The brown rice is a whole grain that is high in fiber and nutrients. The roasted vegetables are a great way to get your daily dose of vitamins and minerals. And the chicken teriyaki is a lean protein source that is also packed with flavor. This meal is easy to prepare ahead of time. Simply cook the brown rice, roast the vegetables, and cook the chicken teriyaki. Then, divide the meal into individual containers and store them in the refrigerator. When you're ready to eat, simply grab a container and heat it up. This meal is a great option for busy people who are looking for a healthy and delicious way to eat. It's also a great meal for those who are trying to lose weight or maintain a healthy weight. If you're looking for a healthy and delicious meal that can be easily prepped ahead of time, this meal is a great option. Give it a try today!
שיחות צ'אט
Gemini מאפשר לנהל שיחות במגוון תורות.
הכיתה ChatSession
מפשטת את התהליך על ידי ניהול מצב
אז שלא כמו עם generate_content
, אתה לא צריך לאחסן
כרשימה של היסטוריית השיחות.
אתחול הצ'אט:
model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
chat
<google.generativeai.generative_models.ChatSession at 0x7b7b68250100>
ChatSession.send_message
ה-method מחזירה את אותו סוג של GenerateContentResponse
כמו
GenerativeModel.generate_content
.
כמו כן, מצורפת ההודעה והתשובה להיסטוריית הצ'אט:
response = chat.send_message("In one sentence, explain how a computer works to a young child.")
to_markdown(response.text)
A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!
chat.history
[ parts { text: "In one sentence, explain how a computer works to a young child." } role: "user", parts { text: "A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!" } role: "model" ]
תוכלו להמשיך לשלוח הודעות כדי להמשיך את השיחה. משתמשים ב
ארגומנט אחד (stream=True
) כדי לשדר את הצ'אט:
response = chat.send_message("Okay, how about a more detailed explanation to a high schooler?", stream=True)
for chunk in response:
print(chunk.text)
print("_"*80)
A computer works by following instructions, called a program, which tells it what to ________________________________________________________________________________ do. These instructions are written in a special language that the computer can understand, and they are stored in the computer's memory. The computer's processor ________________________________________________________________________________ , or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program's logic. The results of these calculations and decisions are then displayed on the computer's screen or stored in memory for later use. To give you a simple analogy, imagine a computer as a ________________________________________________________________________________ chef following a recipe. The recipe is like the program, and the chef's actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen). In summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results. ________________________________________________________________________________
glm.Content
אובייקטים מכילים רשימה של glm.Part
אובייקטים שכל אחד מהם מכיל
טקסט (string) או inline_data (glm.Blob
), שבהם blob מכיל בינארי.
נתונים ו-mime_type
. היסטוריית הצ'אט זמינה ברשימה של glm.Content
אובייקטים ב-
ChatSession.history
:
for message in chat.history:
display(to_markdown(f'**{message.role}**: {message.parts[0].text}'))
**user**: In one sentence, explain how a computer works to a young child. **model**: A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us! **user**: Okay, how about a more detailed explanation to a high schooler? **model**: A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer's memory. The computer's processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program's logic. The results of these calculations and decisions are then displayed on the computer's screen or stored in memory for later use. To give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef's actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen). In summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results.
ספירת אסימונים
למודלים גדולים של שפה יש חלון הקשר, ואורך ההקשר הוא לעיתים קרובות
נמדד במונחים של מספר האסימונים. בעזרת Gemini API אפשר
לקבוע את מספר האסימונים לכל אובייקט genai.protos.Content
. ב
במקרה הפשוט ביותר, אפשר להעביר מחרוזת שאילתה
GenerativeModel.count_tokens
היא:
model.count_tokens("What is the meaning of life?")
total_tokens: 7
באופן דומה, אפשר לחפש את ChatSession
ב-token_count
:
model.count_tokens(chat.history)
total_tokens: 501
שימוש בהטמעות
הטמעה היא שיטה לייצוג מידע כרשימה של מספרים עם נקודה צפה (floating-point) במערך. ב-Gemini אפשר לייצג טקסט (מילים, משפטים ובלוקים) של טקסט) בצורה וקטורית, כדי להקל על ההשוואה והניגוד של הטמעות. לדוגמה, שני טקסטים שעוסקים באותו נושא, סנטימנטים צריכים לכלול הטמעות דומות, שאפשר לזהות באמצעות טכניקות השוואה מתמטיות, כמו דמיון קוסינוס. לקבלת מידע נוסף על ולמה כדאי להשתמש בהטמעות, כדאי לקרוא את המאמר הטמעה guide.
משתמשים בשיטה embed_content
כדי ליצור הטמעות. השיטה מטפלת ב-
הטמעה למשימות הבאות (task_type
):
סוג המשימה | תיאור |
---|---|
RETRIEVAL_QUERY | מציינת שהטקסט הנתון הוא שאילתה בהגדרת חיפוש/אחזור. |
RETRIEVAL_DOCUMENT | מציינת שהטקסט הנתון הוא מסמך בהגדרת חיפוש/אחזור. כדי להשתמש במשימה הזו צריך title . |
SEMANTIC_SIMILARITY | מציינת שהטקסט הנתון ישמש לדמיון סמנטי (STS). |
סיווג | מציינת שההטמעות ישמשו לסיווג. |
אשכול | מציינת שההטמעות ישמשו לקיבוץ לאשכולות. |
הפקודה הבאה יוצרת הטמעה למחרוזת יחידה לאחזור מסמכים:
result = genai.embed_content(
model="models/embedding-001",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")
# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')
[-0.003216741, -0.013358698, -0.017649598, -0.0091 ... TRIMMED]
כדי לטפל בקבוצות של מחרוזות, צריך להעביר רשימת מחרוזות ב-content
:
result = genai.embed_content(
model="models/embedding-001",
content=[
'What is the meaning of life?',
'How much wood would a woodchuck chuck?',
'How does the brain work?'],
task_type="retrieval_document",
title="Embedding of list of strings")
# A list of inputs > A list of vectors output
for v in result['embedding']:
print(str(v)[:50], '... TRIMMED ...')
[0.0040260437, 0.004124458, -0.014209415, -0.00183 ... TRIMMED ... [-0.004049845, -0.0075574904, -0.0073463684, -0.03 ... TRIMMED ... [0.025310587, -0.0080734305, -0.029902633, 0.01160 ... TRIMMED ...
הפונקציה genai.embed_content
מקבלת מחרוזות או רשימות של מחרוזות, אבל היא
מבוססת למעשה על סוג genai.protos.Content
(כמו
GenerativeModel.generate_content
).
אובייקטים מסוג glm.Content
הם יחידות השיחה הראשיות ב-API.
האובייקט genai.protos.Content
הוא מרובה מצבים, אבל embed_content
תומכת בהטמעות טקסט בלבד. העיצוב הזה נותן ל-API
אפשרות להרחיב להטמעות מרובות מצבים.
response.candidates[0].content
parts { text: "A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer\'s memory. The computer\'s processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program\'s logic. The results of these calculations and decisions are then displayed on the computer\'s screen or stored in memory for later use.\n\nTo give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef\'s actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen).\n\nIn summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results." } role: "model"
result = genai.embed_content(
model = 'models/embedding-001',
content = response.candidates[0].content)
# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED ...')
[-0.013921871, -0.03504407, -0.0051786783, 0.03113 ... TRIMMED ...
באופן דומה, היסטוריית הצ'אט מכילה רשימה של genai.protos.Content
אובייקטים,
שאפשר להעביר ישירות לפונקציה embed_content
:
chat.history
[ parts { text: "In one sentence, explain how a computer works to a young child." } role: "user", parts { text: "A computer is like a very smart machine that can understand and follow our instructions, help us with our work, and even play games with us!" } role: "model", parts { text: "Okay, how about a more detailed explanation to a high schooler?" } role: "user", parts { text: "A computer works by following instructions, called a program, which tells it what to do. These instructions are written in a special language that the computer can understand, and they are stored in the computer\'s memory. The computer\'s processor, or CPU, reads the instructions from memory and carries them out, performing calculations and making decisions based on the program\'s logic. The results of these calculations and decisions are then displayed on the computer\'s screen or stored in memory for later use.\n\nTo give you a simple analogy, imagine a computer as a chef following a recipe. The recipe is like the program, and the chef\'s actions are like the instructions the computer follows. The chef reads the recipe (the program) and performs actions like gathering ingredients (fetching data from memory), mixing them together (performing calculations), and cooking them (processing data). The final dish (the output) is then presented on a plate (the computer screen).\n\nIn summary, a computer works by executing a series of instructions, stored in its memory, to perform calculations, make decisions, and display or store the results." } role: "model" ]
result = genai.embed_content(
model = 'models/embedding-001',
content = chat.history)
# 1 input > 1 vector output
for i,v in enumerate(result['embedding']):
print(str(v)[:50], '... TRIMMED...')
[-0.014632266, -0.042202696, -0.015757175, 0.01548 ... TRIMMED... [-0.010979066, -0.024494737, 0.0092659835, 0.00803 ... TRIMMED... [-0.010055617, -0.07208932, -0.00011750793, -0.023 ... TRIMMED... [-0.013921871, -0.03504407, -0.0051786783, 0.03113 ... TRIMMED...
תרחישים מתקדמים לדוגמה
בקטעים הבאים נדון בתרחישים מתקדמים ובפרטים ברמה נמוכה יותר של Python SDK ל-Gemini API.
הגדרות בטיחות
הארגומנט safety_settings
מאפשר להגדיר מה המודל חוסם
מאפשרת גם בהנחיות וגם בתשובות. כברירת מחדל, הגדרות בטיחות חוסמות תוכן
עם סבירות בינונית או גבוהה להיות תוכן לא בטוח
מאפיינים. מידע נוסף על בטיחות
הגדרות.
הזן הנחיה בעייתית ומריצים את המודל עם הגדרות הבטיחות שמוגדרות כברירת מחדל והיא לא תחזיר אף מועמד:
response = model.generate_content('[Questionable prompt here]')
response.candidates
[ content { parts { text: "I\'m sorry, but this prompt involves a sensitive topic and I\'m not allowed to generate responses that are potentially harmful or inappropriate." } role: "model" } finish_reason: STOP index: 0 safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE } ]
ב-prompt_feedback
יצוין איזה מסנן בטיחות חסם את ההצעה לפעולה:
response.prompt_feedback
safety_ratings { category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_HARASSMENT probability: NEGLIGIBLE } safety_ratings { category: HARM_CATEGORY_DANGEROUS_CONTENT probability: NEGLIGIBLE }
עכשיו צריך לספק למודל את אותה הנחיה עם הגדרות בטיחות חדשות, ויכול להיות שתקבלו תשובה.
response = model.generate_content('[Questionable prompt here]',
safety_settings={'HARASSMENT':'block_none'})
response.text
כמו כן, חשוב שלכל מועמד יש safety_ratings
משלו, למקרה שההצעה לפעולה תוצג
עובר, אבל כל התשובות נכשלות בבדיקות האבטחה.
קידוד הודעות
בקטעים הקודמים הסתמכו על ה-SDK כדי שיהיה קל יותר לשלוח הנחיות. ל-API. הקטע הזה מציע מקבילה מלאה בהקלדה לקוד הקודם כדי שתוכל להבין טוב יותר את הפרטים ברמה הנמוכה יותר בנוגע לאופן שבו ערכת ה-SDK מקודדת הודעות.
ה-SDK מנסה להמיר את ההודעה שלך לאובייקט genai.protos.Content
,
שמכיל רשימה של genai.protos.Part
אובייקטים שכל אחד מהם מכיל:
text
(מחרוזת)inline_data
(genai.protos.Blob
), כאשר blob מכילdata
בינארי וגםmime_type
.- או סוגים אחרים של נתונים.
אפשר גם להעביר כל אחד מהמחלקות האלה כמילון מקביל.
כך, המקבילה המקבילה בהקלדה המלאה לדוגמה הקודמת היא:
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(
genai.protos.Content(
parts = [
genai.protos.Part(text="Write a short, engaging blog post based on this picture."),
genai.protos.Part(
inline_data=genai.protos.Blob(
mime_type='image/jpeg',
data=pathlib.Path('image.jpg').read_bytes()
)
),
],
),
stream=True)
response.resolve()
to_markdown(response.text[:100] + "... [TRIMMED] ...")
Meal prepping is a great way to save time and money, and it can also help you to eat healthier. By ... [TRIMMED] ...
שיחות מרובות תורות
הכיתה genai.ChatSession
שהוצגה קודם יכולה לטפל בתרחישים רבים, אבל
מניח כמה הנחות. אם התרחיש לדוגמה שלך לא מתאים לצ'אט הזה
טוב לזכור ש-genai.ChatSession
הוא רק wrapper
בסביבות
GenerativeModel.generate_content
.
בנוסף לבקשות בודדות, האפליקציה יכולה לטפל בשיחות מרובות תורות.
ההודעות הנפרדות הן אובייקטים מסוג genai.protos.Content
או תואמות
מילונים, כפי שנראה בקטעים הקודמים. כמילון, ההודעה
נדרשים role
ומפתחות parts
. role
בשיחה יכול להיות
user
, שמספק את ההנחיות, או model
, שמספק את התשובות.
מעבירים רשימה של genai.protos.Content
אובייקטים, והמערכת תתייחס אליה בתור
צ'אט מרובה פניות:
model = genai.GenerativeModel('gemini-1.5-flash')
messages = [
{'role':'user',
'parts': ["Briefly explain how a computer works to a young child."]}
]
response = model.generate_content(messages)
to_markdown(response.text)
Imagine a computer as a really smart friend who can help you with many things. Just like you have a brain to think and learn, a computer has a brain too, called a processor. It's like the boss of the computer, telling it what to do. Inside the computer, there's a special place called memory, which is like a big storage box. It remembers all the things you tell it to do, like opening games or playing videos. When you press buttons on the keyboard or click things on the screen with the mouse, you're sending messages to the computer. These messages travel through special wires, called cables, to the processor. The processor reads the messages and tells the computer what to do. It can open programs, show you pictures, or even play music for you. All the things you see on the screen are created by the graphics card, which is like a magic artist inside the computer. It takes the processor's instructions and turns them into colorful pictures and videos. To save your favorite games, videos, or pictures, the computer uses a special storage space called a hard drive. It's like a giant library where the computer can keep all your precious things safe. And when you want to connect to the internet to play games with friends or watch funny videos, the computer uses something called a network card to send and receive messages through the internet cables or Wi-Fi signals. So, just like your brain helps you learn and play, the computer's processor, memory, graphics card, hard drive, and network card all work together to make your computer a super-smart friend that can help you do amazing things!
כדי להמשיך את השיחה, תצטרכו להוסיף את התשובה והודעה נוספת.
messages.append({'role':'model',
'parts':[response.text]})
messages.append({'role':'user',
'parts':["Okay, how about a more detailed explanation to a high school student?"]})
response = model.generate_content(messages)
to_markdown(response.text)
At its core, a computer is a machine that can be programmed to carry out a set of instructions. It consists of several essential components that work together to process, store, and display information: **1. Processor (CPU):** - The brain of the computer. - Executes instructions and performs calculations. - Speed measured in gigahertz (GHz). - More GHz generally means faster processing. **2. Memory (RAM):** - Temporary storage for data being processed. - Holds instructions and data while the program is running. - Measured in gigabytes (GB). - More GB of RAM allows for more programs to run simultaneously. **3. Storage (HDD/SSD):** - Permanent storage for data. - Stores operating system, programs, and user files. - Measured in gigabytes (GB) or terabytes (TB). - Hard disk drives (HDDs) are traditional, slower, and cheaper. - Solid-state drives (SSDs) are newer, faster, and more expensive. **4. Graphics Card (GPU):** - Processes and displays images. - Essential for gaming, video editing, and other graphics-intensive tasks. - Measured in video RAM (VRAM) and clock speed. **5. Motherboard:** - Connects all the components. - Provides power and communication pathways. **6. Input/Output (I/O) Devices:** - Allow the user to interact with the computer. - Examples: keyboard, mouse, monitor, printer. **7. Operating System (OS):** - Software that manages the computer's resources. - Provides a user interface and basic functionality. - Examples: Windows, macOS, Linux. When you run a program on your computer, the following happens: 1. The program instructions are loaded from storage into memory. 2. The processor reads the instructions from memory and executes them one by one. 3. If the instruction involves calculations, the processor performs them using its arithmetic logic unit (ALU). 4. If the instruction involves data, the processor reads or writes to memory. 5. The results of the calculations or data manipulation are stored in memory. 6. If the program needs to display something on the screen, it sends the necessary data to the graphics card. 7. The graphics card processes the data and sends it to the monitor, which displays it. This process continues until the program has completed its task or the user terminates it.
הגדרת היצירה
הארגומנט generation_config
מאפשר לשנות את הפרמטרים של הגנרציה.
כל הנחיה ששולחים למודל כוללת ערכי פרמטרים שקובעים איך
שהמודל יוצר תשובות.
model = genai.GenerativeModel('gemini-1.5-flash')
response = model.generate_content(
'Tell me a story about a magic backpack.',
generation_config=genai.types.GenerationConfig(
# Only one candidate for now.
candidate_count=1,
stop_sequences=['x'],
max_output_tokens=20,
temperature=1.0)
)
text = response.text
if response.candidates[0].finish_reason.name == "MAX_TOKENS":
text += '...'
to_markdown(text)
Once upon a time, in a small town nestled amidst lush green hills, lived a young girl named...
המאמרים הבאים
- עיצוב פרומפטים הוא התהליך של יצירת הנחיות שמובילות ממודלים של שפה. כדי לכתוב הנחיות עם מבנה נכון כדי להבטיח תשובות מדויקות ואיכותיות משפה מודל טרנספורמר. מידע על שיטות מומלצות להנחיות כתיבה.
- Gemini מציע כמה וריאציות של מודלים שיתאימו לצרכים של שימושים שונים כמו סוגי קלט ומורכבות, הטמעות לצ'אט או ומגבלות גודל. מידע נוסף על הזמינות מודלים של Gemini.