Hướng dẫn: Làm quen với API Gemini


Xem trên AI của Google Chạy trong Google Colab Xem nguồn trên GitHub

Hướng dẫn bắt đầu nhanh này minh hoạ cách sử dụng SDK Python cho Gemini API. cho phép bạn truy cập vào các mô hình ngôn ngữ lớn Gemini của Google. Trong phần bắt đầu nhanh này, bạn sẽ tìm hiểu cách:

  1. Thiết lập môi trường phát triển và quyền truy cập vào API để sử dụng Gemini.
  2. Tạo câu trả lời bằng văn bản từ thông tin đầu vào.
  3. Tạo phản hồi bằng văn bản từ dữ liệu đầu vào đa phương thức (văn bản và hình ảnh).
  4. Sử dụng Gemini cho các cuộc trò chuyện nhiều lượt (trò chuyện).
  5. Dùng tính năng nhúng cho các mô hình ngôn ngữ lớn.

Điều kiện tiên quyết

Bạn có thể thực hiện quy trình bắt đầu nhanh này trong Google Colab, chạy sổ tay này trực tiếp trong trình duyệt và không cần thêm cấu hình môi trường.

Ngoài ra, để hoàn thành bước khởi đầu nhanh này tại địa phương, hãy đảm bảo rằng đáp ứng các yêu cầu sau:

  • Python 3.9 trở lên
  • Cài đặt jupyter để chạy sổ tay.

Thiết lập

Cài đặt SDK Python

SDK Python cho Gemini API, có trong Gói google-generativeai. Cài đặt phần phụ thuộc bằng pip:

pip install -q -U google-generativeai

Nhập gói

Nhập các gói cần thiết.

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

Thiết lập khoá API

Để có thể sử dụng Gemini API, trước tiên, bạn phải có khoá API. Nếu bạn nếu bạn chưa có khoá, hãy tạo khoá bằng một cú nhấp chuột trong Google AI Studio.

Tải khoá API

Trong Colab, hãy thêm khoá vào trình quản lý bí mật trong phần "🔑" trong bảng điều khiển bên trái. Đặt tên cho tệp đó là GOOGLE_API_KEY.

Sau khi bạn có khoá API, hãy chuyển khoá đó vào SDK. Bạn có thể làm điều này theo hai cách:

  • Đặt khoá này vào biến môi trường GOOGLE_API_KEY (SDK sẽ mà bạn có thể tự động lấy từ đó).
  • Truyền khoá cho 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)

Liệt kê mô hình

Bây giờ, bạn đã có thể gọi Gemini API. Sử dụng list_models để xem Các mô hình Gemini:

  • gemini-1.5-flash: mô hình đa phương thức nhanh nhất của chúng tôi
  • gemini-1.5-pro: mô hình đa phương thức mạnh nhất và thông minh nhất của chúng tôi
for m in genai.list_models():
  if 'generateContent' in m.supported_generation_methods:
    print(m.name)

Tạo văn bản bằng cách nhập văn bản

Đối với những câu lệnh chỉ ở dạng văn bản, hãy sử dụng mô hình Gemini 1.5 hoặc mô hình Gemini 1.0 Pro:

model = genai.GenerativeModel('gemini-1.5-flash')

Phương thức generate_content có thể xử lý nhiều trường hợp sử dụng, bao gồm cả tính năng trò chuyện nhiều lượt và nhập dữ liệu đa phương thức, tuỳ thuộc vào mô hình cơ bản Google Cloud. Các mô hình hiện có chỉ hỗ trợ văn bản và hình ảnh dưới dạng dữ liệu đầu vào và văn bản đầu ra.

Trong trường hợp đơn giản nhất, bạn có thể chuyển một chuỗi dấu nhắc đến hàm GenerativeModel.generate_content phương thức:

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

Trong các trường hợp đơn giản, trình truy cập response.text là tất cả những gì bạn cần. Để hiển thị văn bản Markdown được định dạng, hãy sử dụng hàm 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.

Nếu API không trả về kết quả, hãy sử dụng GenerateContentResponse.prompt_feedback để xem liệu có bị chặn do vấn đề về an toàn liên quan đến lời nhắc hay không.

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 có thể tạo ra nhiều câu trả lời có thể có cho một câu lệnh. Các các phản hồi có thể có được gọi là candidates và bạn có thể xem xét chúng để chọn câu trả lời phù hợp nhất.

Xem các câu trả lời đề xuất bằng 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
  }
]

Theo mặc định, mô hình này trả về một phản hồi sau khi hoàn tất toàn bộ quá trình tạo của chúng tôi. Bạn cũng có thể hiện câu trả lời theo thời gian thực trong lúc câu trả lời được tạo sẽ trả về các đoạn phản hồi ngay khi chúng được tạo.

Để hiện câu trả lời theo thời gian thực, hãy sử dụng 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.
________________________________________________________________________________

Khi truyền trực tuyến, một số thuộc tính phản hồi sẽ không có sẵn cho đến khi bạn lặp lại thông qua tất cả các đoạn phản hồi. Điều này được minh hoạ dưới đây:

response = model.generate_content("What is the meaning of life?", stream=True)

Thuộc tính prompt_feedback hoạt động:

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
}

Tuy nhiên, các thuộc tính như text thì không:

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()`)

Tạo văn bản từ dữ liệu đầu vào dạng hình ảnh và văn bản

Gemini cung cấp nhiều mô hình có thể xử lý phương thức nhập đa phương thức (Gemini 1.5 để có thể nhập cả văn bản và hình ảnh. Hãy nhớ xem lại các yêu cầu về hình ảnh đối với câu lệnh.

Khi câu lệnh nhập bao gồm cả văn bản và hình ảnh, hãy sử dụng Gemini 1.5 có Phương thức GenerativeModel.generate_content để tạo đầu ra văn bản:

Hãy thêm một hình ảnh:

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

Sử dụng mô hình Gemini 1.5 và truyền hình ảnh vào mô hình đó bằng 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.

Để cung cấp cả văn bản và hình ảnh trong câu lệnh, hãy truyền danh sách chứa các chuỗi và hình ảnh:

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!

Cuộc trò chuyện

Gemini tạo điều kiện để bạn trò chuyện tự do ở nhiều chặng. Chiến lược phát hành đĩa đơn Lớp ChatSession đơn giản hoá quy trình bằng cách quản lý trạng thái của cuộc trò chuyện này, vì vậy không giống như generate_content, bạn không phải lưu trữ lịch sử cuộc trò chuyện dưới dạng danh sách.

Bắt đầu cuộc trò chuyện:

model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
chat
<google.generativeai.generative_models.ChatSession at 0x7b7b68250100>

Chiến lược phát hành đĩa đơn ChatSession.send_message phương thức trả về cùng loại GenerateContentResponse như GenerativeModel.generate_content. Thao tác này cũng sẽ thêm tin nhắn và câu trả lời của bạn vào nhật ký trò chuyện:

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"
]

Bạn có thể tiếp tục gửi tin nhắn để tiếp tục cuộc trò chuyện. Sử dụng Đối số stream=True để truyền trực tuyến cuộc trò chuyện:

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.
________________________________________________________________________________

Các đối tượng glm.Content chứa một danh sách gồm các đối tượng glm.Part, trong đó mỗi đối tượng chứa văn bản (chuỗi) hoặc dữ liệu nội tuyến (glm.Blob), trong đó blob chứa tệp nhị phân và mime_type. Nhật ký trò chuyện được cung cấp dưới dạng danh sách glm.Content đối tượng trong 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.

Đếm mã

Mô hình ngôn ngữ lớn có cửa sổ ngữ cảnh và độ dài ngữ cảnh thường được đo lường theo số lượng mã thông báo. Với Gemini API, bạn có thể xác định số lượng mã thông báo cho mỗi đối tượng genai.protos.Content bất kỳ. Trong trường hợp đơn giản nhất, bạn có thể chuyển một chuỗi truy vấn đến GenerativeModel.count_tokens như sau:

model.count_tokens("What is the meaning of life?")
total_tokens: 7

Tương tự, bạn có thể kiểm tra token_count cho ChatSession:

model.count_tokens(chat.history)
total_tokens: 501

Dùng tính năng nhúng

Nhúng là kỹ thuật dùng để biểu diễn thông tin dưới dạng danh sách các số dấu phẩy động trong một mảng. Với Gemini, bạn có thể trình bày văn bản (từ, câu và khối văn bản) ở dạng vectơ hoá, giúp dễ dàng so sánh và đối chiếu hơn các video nhúng. Ví dụ: hai văn bản có cùng chủ đề hoặc cảm xúc nên có nội dung nhúng tương tự, có thể được xác định thông qua kỹ thuật so sánh toán học, chẳng hạn như tính tương đồng về cosin. Để biết thêm về cách và lý do bạn nên sử dụng nhúng, hãy tham khảo phần Nhúng hướng dẫn.

Sử dụng phương thức embed_content để tạo các mục nhúng. Phương thức này xử lý nhúng cho các tác vụ sau (task_type):

Loại việc cần làm Mô tả
RETRIEVAL_QUERY Chỉ định văn bản đã cho là một truy vấn trong chế độ cài đặt tìm kiếm/truy xuất.
RETRIEVAL_DOCUMENT Chỉ định văn bản đã cho là một tài liệu trong chế độ cài đặt tìm kiếm/truy xuất. Để sử dụng loại tác vụ này, bạn cần có title.
SEMANTIC_SIMILARITY Cho biết văn bản đã cho sẽ được dùng để xác định tính tương đồng về mặt văn bản theo ngữ nghĩa (STS).
PHÂN LOẠI Cho biết các mục nhúng sẽ được dùng để phân loại.
PHÂN TÍCH Chỉ định xem các mục nhúng có được dùng để phân cụm hay không.

Hàm sau đây tạo ra một mục nhúng cho một chuỗi đơn để truy xuất tài liệu:

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]

Để xử lý các lô chuỗi, hãy chuyển danh sách các chuỗi trong 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 ...

Mặc dù hàm genai.embed_content chấp nhận các chuỗi hoặc danh sách chuỗi, nhưng hàm này thực sự được xây dựng xung quanh loại genai.protos.Content (như GenerativeModel.generate_content). Đối tượng glm.Content là đơn vị chính của cuộc trò chuyện trong API.

Mặc dù đối tượng genai.protos.Content là đối tượng đa phương thức, nhưng embed_content chỉ hỗ trợ nhúng văn bản. Thiết kế này cung cấp cho API khả năng mở rộng sang các mục nhúng đa phương thức.

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

Tương tự, lịch sử trò chuyện chứa danh sách các đối tượng genai.protos.Content, mà bạn có thể truyền trực tiếp đến hàm 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...

Các trường hợp sử dụng nâng cao

Các phần sau đây thảo luận về các trường hợp sử dụng nâng cao và chi tiết cấp thấp hơn của Python SDK cho Gemini API.

Cài đặt an toàn

Đối số safety_settings cho phép bạn định cấu hình những gì mô hình chặn và cho phép trong cả câu lệnh và câu trả lời. Theo mặc định, các chế độ cài đặt an toàn sẽ chặn nội dung có xác suất là nội dung không an toàn ở mức trung bình và/hoặc cao trên tất cả thứ nguyên. Tìm hiểu thêm về An toàn phần cài đặt.

Nhập một câu lệnh đáng ngờ và chạy mô hình với các chế độ cài đặt an toàn mặc định, và sẽ không trả về bất kỳ đề xuất nào:

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 sẽ cho bạn biết bộ lọc an toàn nào đã chặn lời nhắc:

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
}

Bây giờ, hãy đưa ra lời nhắc tương tự cho mô hình đó với các chế độ cài đặt an toàn mới được định cấu hình. và có thể bạn sẽ nhận được phản hồi.

response = model.generate_content('[Questionable prompt here]',
                                  safety_settings={'HARASSMENT':'block_none'})
response.text

Ngoài ra, xin lưu ý rằng mỗi đề xuất đều có safety_ratings riêng, trong trường hợp lời nhắc xuất hiện đã vượt qua nhưng từng phản hồi không vượt qua quy trình kiểm tra an toàn.

Mã hoá tin nhắn

Các phần trước dựa vào SDK để giúp bạn dễ dàng gửi lời nhắc cho API. Phần này cung cấp một phiên bản có đầy đủ thông tin như để bạn có thể hiểu rõ hơn chi tiết cấp thấp hơn về cách SDK mã hoá thông báo.

SDK cố gắng chuyển đổi thông báo của bạn thành đối tượng genai.protos.Content, Tệp này chứa danh sách các đối tượng genai.protos.Part, trong đó mỗi đối tượng chứa:

  1. một text (chuỗi)
  2. inline_data (genai.protos.Blob), trong đó blob chứa data nhị phân và một mime_type.
  3. hoặc các loại dữ liệu khác.

Bạn cũng có thể truyền bất kỳ lớp nào trong số này dưới dạng một từ điển tương đương.

Vì vậy, mã tương đương được nhập đầy đủ như ví dụ trước là:

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] ...

Cuộc trò chuyện nhiều lượt

Mặc dù lớp genai.ChatSession hiển thị trước đó có thể xử lý nhiều trường hợp sử dụng, nhưng lớp này có đưa ra một số giả định. Nếu trường hợp sử dụng của bạn không phù hợp với cuộc trò chuyện này Bạn nên nhớ rằng genai.ChatSession chỉ là một trình bao bọc xung quanh GenerativeModel.generate_content. Ngoài các yêu cầu đơn lẻ, ứng dụng này có thể xử lý các cuộc trò chuyện nhiều lượt.

Các thư riêng lẻ có đối tượng genai.protos.Content hoặc tương thích từ điển, như đã thấy trong các phần trước. Như một từ điển, thông điệp cần có khoá roleparts. role trong một cuộc trò chuyện có thể là user (đưa ra câu lệnh) hoặc model cung cấp câu trả lời.

Truyền một danh sách đối tượng genai.protos.Content và đối tượng đó sẽ được coi là trò chuyện nhiều lượt:

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!

Để tiếp tục cuộc trò chuyện, hãy thêm câu trả lời và một tin nhắn khác.

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.

Cấu hình tạo

Đối số generation_config cho phép bạn sửa đổi các tham số tạo. Mỗi câu lệnh bạn gửi đến mô hình đều có các giá trị thông số kiểm soát cách mô hình tạo ra các câu trả lời.

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

Các bước tiếp theo

  • Thiết kế câu lệnh là quá trình tạo câu lệnh đáp ứng mong muốn phản hồi từ các mô hình ngôn ngữ. Việc viết câu lệnh có cấu trúc hợp lý là một cách một phần thiết yếu để đảm bảo các câu trả lời chính xác và có chất lượng cao từ một ngôn ngữ mô hình. Tìm hiểu các phương pháp hay nhất cho lời nhắc viết.
  • Gemini cung cấp một số biến thể mô hình để đáp ứng nhu cầu sử dụng khác nhau trường hợp, chẳng hạn như loại dữ liệu đầu vào và độ phức tạp, các cách triển khai cho cuộc trò chuyện hoặc các tác vụ ngôn ngữ của hộp thoại và giới hạn kích thước. Tìm hiểu về Các mô hình Gemini.