آموزش: با Gemini API شروع کنید


مشاهده در گوگل AI در Google Colab اجرا شود مشاهده منبع در GitHub

این شروع سریع نحوه استفاده از Python SDK را برای Gemini API نشان می دهد که به شما امکان دسترسی به مدل های زبان بزرگ Gemini گوگل را می دهد. در این شروع سریع، یاد خواهید گرفت که چگونه:

  1. محیط توسعه و دسترسی API خود را برای استفاده از Gemini تنظیم کنید.
  2. پاسخ های متنی را از ورودی های متنی ایجاد کنید.
  3. پاسخ های متنی را از ورودی های چندوجهی (متن و تصاویر) تولید کنید.
  4. از Gemini برای مکالمات چند نوبتی (چت) استفاده کنید.
  5. از تعبیه‌ها برای مدل‌های زبان بزرگ استفاده کنید.

پیش نیازها

می‌توانید این شروع سریع را در Google Colab اجرا کنید، که این نوت‌بوک را مستقیماً در مرورگر اجرا می‌کند و نیازی به پیکربندی محیط اضافی ندارد.

از طرف دیگر، برای تکمیل این شروع سریع به صورت محلی، اطمینان حاصل کنید که محیط توسعه شما شرایط زیر را برآورده می کند:

  • پایتون 3.9+
  • نصب jupyter برای اجرای نوت بوک.

برپایی

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 یک کلید ایجاد کنید.

یک کلید API دریافت کنید

در 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 می‌تواند طیف گسترده‌ای از موارد استفاده، از جمله چت چند نوبتی و ورودی چندوجهی را، بسته به آنچه مدل اصلی پشتیبانی می‌کند، انجام دهد. مدل های موجود فقط از متن و تصاویر به عنوان ورودی و متن به عنوان خروجی پشتیبانی می کنند.

در ساده‌ترین حالت، می‌توانید یک رشته prompt را به متد 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.

اگر 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

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!

گفتگوهای چت

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 تعیین کنید. در ساده ترین حالت، می توانید یک query string را به روش 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، می‌توانید متن (کلمات، جملات و بلوک‌های متن) را به شکل برداری نمایش دهید، که مقایسه و تضاد جاسازی‌ها را آسان‌تر می‌کند. برای مثال، دو متنی که موضوع یا احساسات مشابهی دارند باید دارای تعبیه‌های مشابهی باشند که از طریق تکنیک‌های مقایسه ریاضی مانند شباهت کسینوس قابل شناسایی است. برای اطلاعات بیشتر در مورد اینکه چگونه و چرا باید از جاسازی ها استفاده کنید، به راهنمای جاسازی ها مراجعه کنید.

برای ایجاد embedding از روش 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 است که هر کدام شامل یکی از این موارد است:

  1. یک text (رشته)
  2. inline_data ( genai.protos.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 آشنا شوید.