برنامج تعليمي: بدء استخدام Gemini API


العرض على تكنولوجيات الذكاء الاصطناعي من Google التنفيذ في Google Colab عرض المصدر على GitHub

تشرح هذه المقالة السريعة كيفية استخدام حزمة Python API الخاصة بـ Gemini API، يتيح لك الوصول إلى نماذج Gemini اللغوية الكبيرة من Google. في هذه البداية السريعة، سوف تتعلم كيفية:

  1. لاستخدام Gemini، يُرجى إعداد بيئة التطوير وإمكانية الوصول إلى واجهة برمجة التطبيقات.
  2. إنشاء ردود نصية من الإدخالات النصية
  3. إنشاء ردود نصية من مدخلات متعددة الوسائط (النصوص والصور)
  4. استخدِم Gemini لإجراء محادثات متعددة الأدوار (الدردشة).
  5. يمكنك استخدام التضمينات للنماذج اللغوية الكبيرة.

المتطلبات الأساسية

يمكنك تنفيذ هذه البدء السريع في Colab، التي تشغل ورقة الملاحظات هذه مباشرةً في المتصفح ولا تتطلب إضافات تهيئة بيئة التشغيل.

ولإكمال هذه البداية السريعة محليًا، تأكَّد من أنّ تطوير البيئة المتطلبات التالية:

  • Python 3.9+
  • يجب تثبيت jupyter لتشغيل ورقة الملاحظات.

ضبط إعدادات الجهاز

تثبيت حزمة Python SDK

يتم تضمين حزمة Python API الخاصة بـ 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

إعداد مفتاح واجهة برمجة التطبيقات

لكي تتمكّن من استخدام Gemini API، يجب أولاً الحصول على مفتاح واجهة برمجة تطبيقات. إذا كنت لم يكن لديك مفتاح، يمكنك إنشاء مفتاح بنقرة واحدة في Google AI Studio.

الحصول على مفتاح واجهة برمجة التطبيقات

في Colab، أضِف المفتاح إلى مدير المفاتيح السرّية ضمن "🔑". في اللوحة اليمنى. أدخِل الاسم GOOGLE_API_KEY.

بعد حصولك على مفتاح واجهة برمجة التطبيقات، أرسِله إلى حزمة تطوير البرامج (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. استخدِم 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 :

%%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

وفي بعض الحالات البسيطة، يكون كل ما تحتاج إليه هو موصِّل 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.

إذا فشلت واجهة برمجة التطبيقات في عرض نتيجة، استخدم 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

png

استخدِم نموذج 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!

محادثات Chat

يتيح لك 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 تُرجع النوع 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 عناصر يحتوي كل منها على إما نص (سلسلة) أو 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

بالمثل، يمكنك التحقّق من token_count لجهاز ChatSession:

model.count_tokens(chat.history)
total_tokens: 501

استخدام التضمينات

التضمين هي تقنية تُستخدم لتمثيل المعلومات كقائمة من أرقام النقاط العائمة في صفيف. باستخدام Gemini، يمكنك تمثيل النصوص (مثل الكلمات والجمل والمربّعات) من النص) في شكل متجه، مما يسهل المقارنة والتباين التضمينات. على سبيل المثال، هناك نصان يتشاركان في موضوع مماثل أو يجب أن يكون للعاطفة تضمينات متشابهة، يمكن تحديدها من خلال تقنيات المقارنة الرياضية مثل تشابه جيب التمام. لمزيد من المعلومات حول كيفية ولماذا يجب عليك استخدام التضمينات، راجع قسم التضمينات الدليل.

استخدِم طريقة 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 هي الوحدات الأساسية للمحادثة في واجهة برمجة التطبيقات.

فيما يعتبر الكائن genai.protos.Content متعدد الوسائط، فإن embed_content ميزة تضمين النص فقط. وهذا التصميم يمنح واجهة برمجة التطبيقات possibility للتوسّع إلى التضمينات المتعددة الوسائط.

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 API الخاصة بـ 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) لتسهيل إرسال الطلبات. بواجهة برمجة التطبيقات. يقدم هذا القسم مكافئًا مكتوبًا بالكامل للقسم السابق مثال، حتى تتمكن من فهم التفاصيل المنخفضة المستوى في ما يتعلق بكيفية تعمل حزمة SDK على ترميز الرسائل.

تحاول حزمة تطوير البرامج (SDK) تحويل رسالتك إلى كائن "genai.protos.Content"، الذي يحتوي على قائمة بكائنات genai.protos.Part يحتوي كل منها على:

  1. a text (سلسلة)
  2. inline_data (genai.protos.Blob)، حيث يحتوي الكائن الثنائي الكبير (blob) على قيمة data ثنائية mime_type.
  3. أو أنواعًا أخرى من البيانات.

يمكنك أيضًا اجتياز أي من هذه الصفوف كقاموس مكافئ.

إذًا، المكافئ المكتوب بالكامل للمثال السابق هو:

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 مجرد برنامج تضمين في الجوار 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: