مشاهده در گوگل AI | در Google Colab اجرا شود | مشاهده منبع در GitHub |
این شروع سریع نحوه استفاده از Python SDK را برای Gemini API نشان می دهد که به شما امکان دسترسی به مدل های زبان بزرگ Gemini گوگل را می دهد. در این شروع سریع، یاد خواهید گرفت که چگونه:
- محیط توسعه و دسترسی API خود را برای استفاده از Gemini تنظیم کنید.
- پاسخ های متنی را از ورودی های متنی ایجاد کنید.
- پاسخ های متنی را از ورودی های چندوجهی (متن و تصاویر) تولید کنید.
- از Gemini برای مکالمات چند نوبتی (چت) استفاده کنید.
- از تعبیهها برای مدلهای زبان بزرگ استفاده کنید.
پیش نیازها
میتوانید این شروع سریع را در 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 یک کلید ایجاد کنید.
در 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)
پرسش از هدف زندگی مردم را در قرن ها، فرهنگ ها و قاره ها گیج کرده است. در حالی که هیچ پاسخ شناخته شده جهانی وجود ندارد، ایده های زیادی مطرح شده است، و پاسخ اغلب به ایده ها، باورها و تجربیات زندگی فردی بستگی دارد.
خوشبختی و رفاه: بسیاری از افراد بر این باورند که هدف زندگی دستیابی به خوشبختی و رفاه شخصی است. این ممکن است مستلزم یافتن مشاغلی باشد که باعث شادی می شود، ایجاد ارتباطات مهم، مراقبت از سلامت جسمی و روانی فرد، و پیگیری اهداف و علایق شخصی.
مشارکت معنادار: برخی معتقدند که هدف از زندگی این است که کمکی معنادار به جهان داشته باشد. این ممکن است مستلزم دنبال کردن حرفه ای باشد که به نفع دیگران باشد، درگیر شدن در فعالیت های داوطلبانه یا خیریه، تولید هنر یا ادبیات، یا اختراع.
خودشناسی و رشد شخصی: پیگیری خودشناسی و رشد شخصی یکی دیگر از اهداف مشترک زندگی است. این ممکن است مستلزم یادگیری مهارت های جدید، فراتر رفتن از مرزها، رویارویی با موانع شخصی و تکامل به عنوان یک فرد باشد.
رفتار اخلاقی و اخلاقی: برخی بر این باورند که هدف از زندگی، رفتار اخلاقی و اخلاقی است. این ممکن است مستلزم پایبندی به اصول اخلاقی، انجام کار درست حتی زمانی که دشوار است، و تلاش برای تبدیل جهان به مکانی بهتر باشد.
تحقق معنوی: برای برخی، هدف زندگی به باورهای معنوی یا مذهبی مرتبط است. این ممکن است مستلزم جستجوی ارتباط با یک قدرت برتر، انجام مراسم مذهبی یا پیروی از آموزه های معنوی باشد.
تجربه کامل زندگی: برخی از افراد بر این باورند که هدف زندگی این است که همه چیزهایی را که ارائه می دهد تجربه کنند. این ممکن است مستلزم سفر، امتحان چیزهای جدید، ریسک کردن و استقبال از برخوردهای جدید باشد.
میراث و تأثیر: برخی دیگر بر این باورند که هدف از زندگی، به جای گذاشتن میراث و تأثیر ماندگار در جهان است. این ممکن است مستلزم انجام چیزی قابل توجه، به خاطر سپردن به خاطر مشارکت های خود، یا الهام بخشیدن و برانگیختن دیگران باشد.
یافتن تعادل و هماهنگی: برای برخی، هدف از زندگی یافتن تعادل و هماهنگی در تمام جنبه های زندگیشان است. این ممکن است مستلزم تقلب در تعهدات شخصی، حرفه ای و اجتماعی، جستجوی آرامش و رضایت درونی و زندگی مطابق با ارزش ها و باورهای فرد باشد.
در نهایت، معنای زندگی یک سفر شخصی است و افراد مختلف ممکن است هدف منحصر به فرد خود را از طریق تجربیات، بازتاب ها و تعامل با دنیای اطراف خود کشف کنند.
اگر 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)
کاسه های آماده سازی غذای مرغ Teriyaki با برنج قهوه ای، کلم بروکلی تفت داده شده و فلفل دلمه ای.
برای ارائه متن و تصاویر در یک اعلان، لیستی حاوی رشته ها و تصاویر را ارسال کنید:
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)
تهیه غذا یک راه عالی برای صرفه جویی در زمان و هزینه است و همچنین می تواند به شما کمک کند که غذای سالم تری داشته باشید. این غذا نمونه ای عالی از یک غذای سالم و خوشمزه است که به راحتی می توان آن را زودتر از موعد آماده کرد.
این غذا شامل برنج قهوه ای، سبزیجات بوداده و تریاکی مرغ است. برنج قهوه ای یک غلات کامل است که سرشار از فیبر و مواد مغذی است. سبزیجات برشته یک راه عالی برای دریافت دوز روزانه ویتامین ها و مواد معدنی هستند. و مرغ تریاکی یک منبع پروتئین بدون چربی است که همچنین با طعم و مزه بسته بندی شده است.
این غذا به راحتی زودتر آماده می شود. به سادگی برنج قهوه ای را بپزید، سبزیجات را تفت دهید و مرغ تریاکی را بپزید. سپس غذا را در ظرف های جداگانه تقسیم کرده و در یخچال نگهداری کنید. وقتی آماده خوردن شدید، به سادگی یک ظرف را بردارید و آن را گرم کنید.
این غذا برای افراد پرمشغله ای که به دنبال یک غذای سالم و خوشمزه هستند، گزینه بسیار مناسبی است. همچنین یک وعده غذایی عالی برای کسانی است که سعی در کاهش وزن یا حفظ وزن سالم دارند.
اگر به دنبال یک غذای سالم و لذیذ هستید که به راحتی بتوان آن را زودتر از موعد آماده کرد، این غذا گزینه بسیار خوبی است. امروز امتحانش کن!
گفتگوهای چت
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)
کامپیوتر مانند یک ماشین بسیار هوشمند است که می تواند دستورالعمل های ما را بفهمد و دنبال کند، در کارمان به ما کمک کند و حتی با ما بازی کند!
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}'))
کاربر : در یک جمله نحوه کار یک کامپیوتر را برای یک کودک خردسال توضیح دهید.
مدل : کامپیوتر مانند یک ماشین بسیار هوشمند است که می تواند دستورالعمل های ما را بفهمد و دنبال کند، در کارمان به ما کمک کند و حتی با ما بازی کند!
کاربر : خوب، توضیح دقیق تری برای یک دبیرستانی چطور؟
مدل : یک کامپیوتر با پیروی از دستورالعملهایی که برنامه نامیده میشود کار میکند و به آن میگوید چه کاری انجام دهد. این دستورالعمل ها به زبان خاصی نوشته شده اند که کامپیوتر آن را بفهمد و در حافظه کامپیوتر ذخیره می شود. پردازنده کامپیوتر یا CPU دستورالعمل ها را از حافظه می خواند و آنها را انجام می دهد و محاسبات را انجام می دهد و بر اساس منطق برنامه تصمیم می گیرد. سپس نتایج این محاسبات و تصمیمات بر روی صفحه نمایش کامپیوتر نمایش داده می شود یا برای استفاده بعدی در حافظه ذخیره می شود.
برای ارائه یک تشبیه ساده، کامپیوتری را به عنوان سرآشپز تصور کنید که از دستور العمل پیروی می کند. دستور غذا مانند برنامه است و اقدامات سرآشپز مانند دستورالعمل هایی است که کامپیوتر دنبال می کند. سرآشپز دستور پخت (برنامه) را می خواند و اقداماتی مانند جمع آوری مواد (واگیری داده ها از حافظه)، مخلوط کردن آنها با یکدیگر (انجام محاسبات) و پختن آنها (پردازش داده ها) را انجام می دهد. سپس ظرف نهایی (خروجی) روی یک بشقاب (صفحه نمایش کامپیوتر) ارائه می شود.
به طور خلاصه، یک کامپیوتر با اجرای یک سری دستورالعمل، ذخیره شده در حافظه آن، برای انجام محاسبات، تصمیم گیری و نمایش یا ذخیره نتایج کار می کند.
توکن ها را بشمار
مدلهای زبان بزرگ دارای یک پنجره زمینه هستند و طول متن اغلب بر حسب تعداد نشانهها اندازهگیری میشود. با 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
است که هر کدام شامل یکی از این موارد است:
- یک
text
(رشته) -
inline_data
(genai.protos.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] ...")
تهیه غذا یک راه عالی برای صرفه جویی در زمان و هزینه است و همچنین می تواند به شما کمک کند که غذای سالم تری داشته باشید. توسط ... [ترکیب شده] ...
مکالمات چند نوبتی
در حالی که کلاس 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)
یک کامپیوتر را به عنوان یک دوست واقعاً باهوش تصور کنید که می تواند در بسیاری از موارد به شما کمک کند. درست همانطور که شما مغزی برای فکر کردن و یادگیری دارید، کامپیوتر نیز مغزی دارد که به آن پردازنده می گویند. مثل این است که رئیس کامپیوتر به او می گوید چه کار کند.
در داخل کامپیوتر جای خاصی به نام حافظه وجود دارد که مانند یک جعبه ذخیره سازی بزرگ است. همه چیزهایی را که به او میگویید، مانند باز کردن بازیها یا پخش ویدیو، به خاطر میآورد.
وقتی دکمههای روی صفحهکلید را فشار میدهید یا با ماوس روی چیزهایی روی صفحه کلیک میکنید، پیامهایی را به رایانه ارسال میکنید. این پیامها از طریق سیمهای خاصی که کابل نامیده میشوند به پردازنده منتقل میشوند.
پردازنده پیام ها را می خواند و به رایانه می گوید که چه کاری انجام دهد. می تواند برنامه ها را باز کند، تصاویر را به شما نشان دهد یا حتی موسیقی را برای شما پخش کند.
تمام چیزهایی که روی صفحه می بینید توسط کارت گرافیک ایجاد می شوند که مانند یک هنرمند جادویی در داخل کامپیوتر است. دستورالعمل های پردازنده را می گیرد و آنها را به تصاویر و فیلم های رنگارنگ تبدیل می کند.
برای ذخیره بازی ها، فیلم ها یا تصاویر مورد علاقه شما، رایانه از فضای ذخیره سازی خاصی به نام هارد دیسک استفاده می کند. این مانند یک کتابخانه غول پیکر است که در آن رایانه می تواند همه چیزهای با ارزش شما را ایمن نگه دارد.
و هنگامی که می خواهید برای بازی با دوستان یا تماشای ویدیوهای خنده دار به اینترنت متصل شوید، رایانه از چیزی به نام کارت شبکه برای ارسال و دریافت پیام از طریق کابل های اینترنت یا سیگنال های Wi-Fi استفاده می کند.
بنابراین، درست همانطور که مغز شما به شما کمک می کند تا یاد بگیرید و بازی کنید، پردازنده، حافظه، کارت گرافیک، هارد دیسک و کارت شبکه کامپیوتر همگی با هم کار می کنند تا کامپیوتر شما را به یک دوست فوق العاده باهوش تبدیل کنند که می تواند به شما در انجام کارهای شگفت انگیز کمک کند!
برای ادامه مکالمه، پاسخ و پیام دیگری را اضافه کنید.
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)
کامپیوتر در هسته خود ماشینی است که می تواند برای اجرای مجموعه ای از دستورالعمل ها برنامه ریزی شود. این شامل چندین جزء ضروری است که برای پردازش، ذخیره و نمایش اطلاعات با هم کار می کنند:
1. پردازنده (CPU): - مغز کامپیوتر. - دستورات را اجرا می کند و محاسبات را انجام می دهد. - سرعت بر حسب گیگاهرتز (گیگاهرتز) اندازه گیری می شود. - گیگاهرتز بیشتر به طور کلی به معنای پردازش سریعتر است.
2. حافظه (RAM): - ذخیره سازی موقت برای داده های در حال پردازش. - دستورالعمل ها و داده ها را در حین اجرای برنامه نگه می دارد. - اندازه گیری در گیگابایت (GB). - گیگابایت رم بیشتر باعث می شود تا برنامه های بیشتری به طور همزمان اجرا شوند.
3. ذخیره سازی (HDD/SSD): - ذخیره سازی دائمی برای داده ها. - سیستم عامل، برنامه ها و فایل های کاربر را ذخیره می کند. - اندازه گیری در گیگابایت (GB) یا ترابایت (TB). - هارد دیسک ها (HDD) سنتی، کندتر و ارزان تر هستند. - درایوهای حالت جامد (SSD) جدیدتر، سریعتر و گرانتر هستند.
4. کارت گرافیک (GPU): - پردازش و نمایش تصاویر. - برای بازی، ویرایش ویدیو و سایر کارهای گرافیکی ضروری است. - اندازه گیری در رم ویدیویی (VRAM) و سرعت ساعت.
5. مادربرد: - تمام اجزا را به هم متصل می کند. - راه های برق و ارتباط را فراهم می کند.
6. دستگاه های ورودی/خروجی (I/O): - به کاربر اجازه می دهد با کامپیوتر تعامل داشته باشد. - مثال: صفحه کلید، ماوس، مانیتور، چاپگر.
7. سیستم عامل (OS): - نرم افزاری که منابع کامپیوتر را مدیریت می کند. - یک رابط کاربری و عملکرد اولیه را فراهم می کند. - مثالها: Windows، macOS، Linux.
هنگامی که برنامه ای را روی رایانه خود اجرا می کنید، موارد زیر رخ می دهد:
- دستورالعمل های برنامه از ذخیره سازی در حافظه بارگذاری می شوند.
- پردازنده دستورالعمل ها را از حافظه می خواند و آنها را یکی یکی اجرا می کند.
- اگر دستورالعمل شامل محاسبات باشد، پردازنده آنها را با استفاده از واحد منطقی محاسباتی خود (ALU) انجام می دهد.
- اگر دستورالعمل شامل داده باشد، پردازنده در حافظه می خواند یا می نویسد.
- نتایج محاسبات یا دستکاری داده ها در حافظه ذخیره می شود.
- اگر برنامه نیاز به نمایش چیزی روی صفحه داشته باشد، داده های لازم را به کارت گرافیک ارسال می کند.
- کارت گرافیک داده ها را پردازش می کند و به مانیتور می فرستد و آن را نمایش می دهد.
این روند تا زمانی ادامه می یابد که برنامه وظیفه خود را کامل کند یا کاربر آن را خاتمه دهد.
پیکربندی نسل
آرگومان 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)
روزی روزگاری در شهری کوچک در میان تپه های سرسبز و سرسبز، دختر جوانی زندگی می کرد به نام...
بعدش چی
- طراحی سریع فرآیند ایجاد اعلانهایی است که پاسخ دلخواه را از مدلهای زبانی به دست میآورد. نوشتن اعلانهای ساختاریافته بخش ضروری برای اطمینان از پاسخهای دقیق و با کیفیت بالا از یک مدل زبان است. درباره بهترین شیوه ها برای نوشتن سریع بیاموزید.
- Gemini چندین مدل مختلف را برای برآوردن نیازهای موارد استفاده مختلف، مانند انواع ورودی و پیچیدگی، پیاده سازی برای چت یا سایر وظایف زبان گفتگو، و محدودیت های اندازه ارائه می دهد. با مدل های موجود Gemini آشنا شوید.