1. Tổng quan
Gọi hàm trong Gemini là gì?
Vertex AI Gemini API là một nhóm các mô hình AI tạo sinh do Google DeepMind phát triển, được thiết kế cho các trường hợp sử dụng đa phương thức. Gọi hàm là một tính năng của các mô hình Gemini, giúp nhà phát triển dễ dàng nhận được đầu ra dữ liệu có cấu trúc từ các mô hình tạo sinh.
Sau đó, nhà phát triển có thể dùng các đầu ra này để gọi các API khác và trả về dữ liệu phản hồi có liên quan cho mô hình. Nói cách khác, tính năng gọi hàm giúp bạn kết nối các mô hình tạo sinh với các hệ thống bên ngoài để nội dung được tạo bao gồm thông tin chính xác và mới nhất.
Cách hoạt động của tính năng gọi hàm
Các hàm được mô tả bằng cách sử dụng khai báo hàm, giúp mô hình tạo sinh hiểu được mục đích và các tham số trong một hàm. Sau khi bạn truyền các khai báo hàm trong một truy vấn đến một mô hình tạo sinh, mô hình sẽ trả về một đối tượng có cấu trúc bao gồm tên của các hàm có liên quan và đối số của các hàm đó dựa trên truy vấn của người dùng. Xin lưu ý rằng với tính năng gọi hàm, mô hình không thực sự gọi hàm. Thay vào đó, bạn có thể dùng hàm và các tham số được trả về để gọi hàm bằng bất kỳ ngôn ngữ, thư viện hoặc khung nào mà bạn muốn!

Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ xây dựng một quy trình AI tạo sinh bằng Vertex AI Gemini API và Python. Khi dùng ứng dụng của bạn, người dùng có thể hỏi về tỷ giá hối đoái và hệ thống sẽ tìm nạp dữ liệu mới nhất từ một API bên ngoài rồi trả lời người dùng.
Kiến thức bạn sẽ học được
- Cách tương tác với mô hình Gemini bằng thư viện ứng dụng Python
- Cách xác định một khai báo hàm và đăng ký khai báo đó làm công cụ
- Cách gọi Gemini và nhận phản hồi lệnh gọi hàm
- Cách trả về phản hồi của hàm cho Gemini và trả lời người dùng
Bạn cần có
- Một dự án trên Google Cloud
- Một trình duyệt như Chrome
- Môi trường phát triển Python, chẳng hạn như Colab hoặc Colab Enterprise
2. Thiết lập và yêu cầu
Để có thể bắt đầu sử dụng tính năng gọi hàm trong Gemini, bạn cần bật Vertex AI API và cài đặt phiên bản mới nhất của thư viện ứng dụng Vertex AI Python.
Bật Vertex AI API
Để bật Vertex AI API, hãy làm theo các bước sau:
- Trong trình duyệt, hãy chuyển đến trang thông tin chi tiết về dịch vụ Vertex AI API.
- Nhấp vào nút Bật để bật Vertex AI API trong dự án trên đám mây Google Cloud của bạn.
Cài đặt thư viện ứng dụng Python cho Vertex AI
Để cài đặt thư viện ứng dụng Python cho Vertex AI, hãy làm theo các bước sau:
- Mở một cửa sổ dòng lệnh trong môi trường phát triển của bạn.
- Xác minh rằng bạn có một môi trường phát triển Python hợp lệ và tham khảo các nguyên tắc này nếu cần.
- Chạy lệnh sau để cài đặt thư viện ứng dụng Python cho Vertex AI:
pip install --upgrade google-cloud-aiplatform - Nếu đang chạy trong môi trường sổ tay, thì bạn có thể cần khởi động lại thời gian chạy/nhân để sử dụng các gói mới cài đặt.
Giờ đây, bạn đã sẵn sàng sử dụng API Vertex AI!
3. Hiểu rõ vấn đề
Bạn đã bao giờ tương tác với một mô hình ngôn ngữ lớn hoặc mô hình AI tạo sinh và hỏi mô hình đó về thông tin theo thời gian thực hoặc thông tin hiện tại, nhưng chỉ nhận được câu trả lời có thông tin lỗi thời hoặc không chính xác chưa?
Hãy thử ngay! Trước tiên, chúng ta sẽ nhập các gói Python có liên quan và khởi tạo mô hình Gemini. Bạn có thể chạy mã sau trong một môi trường phát triển Python như Colab hoặc Colab Enterprise và bằng cách cài đặt phiên bản mới nhất của Vertex AI SDK cho Python:
import vertexai
from vertexai.generative_models import GenerativeModel
model = GenerativeModel("gemini-1.5-pro-001")
Bây giờ, hãy đặt câu hỏi về tỷ giá hối đoái của các loại tiền tệ hôm nay:
response = model.generate_content(
"What's the exchange rate for euros to dollars today?"
)
print(response.text)
Mô hình sẽ tạo cho bạn một câu trả lời có giới hạn hoặc lỗi thời, tương tự như:
As an AI language model, I don't have access to real-time currency exchange rates. However, as of my last update in September 2021, the approximate exchange rate between euros (EUR) and US dollars (USD) was: 1 EUR ≈ 1.18 USD Please note that currency exchange rates constantly fluctuate and can vary depending on various factors such as economic conditions, supply and demand, political events, and more. To obtain the most up-to-date and accurate exchange rate, I recommend using a reliable currency converter or financial website that provides live rates. [...]
Nếu nhận được loại phản hồi này, người dùng cuối sẽ cần chuyển đổi ngữ cảnh để tra cứu các loại tiền tệ mà họ quan tâm, tìm nạp tỷ giá hối đoái mới nhất và tự thực hiện mọi hoạt động chuyển đổi.
Lý tưởng nhất là một quy trình mô hình tạo sinh có thể xử lý một số hoặc tất cả các tác vụ này cho người dùng. Trong phần tiếp theo, bạn sẽ thử một số giải pháp thường dùng để nhận được các câu trả lời có cấu trúc từ các mô hình tạo sinh, nhờ đó bạn có thể gọi các hệ thống bên ngoài.
4. Thử các giải pháp thường dùng
Khi làm việc với các mô hình tạo sinh trong những trường hợp cần thông tin hoặc dữ liệu mới nhất từ các nguồn bên ngoài, bạn có thể gọi một API bên ngoài rồi cung cấp kết quả cho mô hình tạo sinh để mô hình này sử dụng trong câu trả lời của mình.
Trước khi gọi một hệ thống bên ngoài, bạn cần xác định hàm phù hợp để sử dụng, trích xuất các tham số liên quan từ người dùng và đưa các tham số vào một đối tượng dữ liệu có cấu trúc. Điều này thường liên quan đến việc thiết kế câu lệnh một cách toàn diện để buộc mô hình tạo sinh xuất dữ liệu có cấu trúc hợp lệ.
Hãy xem lại câu hỏi mà chúng ta đã đặt ra trong phần trước và thêm một số hướng dẫn bổ sung cho mô hình. Hãy thử gửi yêu cầu sau đây đến mô hình Gemini:
user_prompt = "What's the exchange rate from euros to US dollars today?"
response = model.generate_content("""
Your task is to extract parameters from the user's input and return it as a
structured JSON payload. The user will ask about the exchange rate and which
currency they are converting from and converting to.
User input: {user_prompt}
Please extract the currencies as parameters and put them in a JSON object.
""".format(user_prompt=user_prompt))
print(response.text)
Kết quả là phản hồi văn bản sau đây, không phải là JSON hợp lệ và chúng tôi sẽ khó làm việc với phản hồi này:
```json
{
"currency_from": "euros",
"currency_to": "US dollars"
}
```
Cụ thể, dòng đầu tiên và dòng cuối cùng của phản hồi văn bản có chứa dấu nháy ngược để phân định khối mã, dòng đầu tiên có chứa một bộ chỉ định ngôn ngữ và các giá trị trong đối tượng JSON không phải là các chữ viết tắt tiêu chuẩn gồm 3 chữ cái của đơn vị tiền tệ mà một API trao đổi tiền tệ sẽ mong đợi làm tham số đầu vào.
Chúng ta có thể thử dùng Python để xử lý hậu kỳ văn bản này thành JSON và từ điển hợp lệ, thêm hướng dẫn vào câu lệnh, cung cấp một hoặc nhiều ví dụ về đầu ra mong muốn, tinh chỉnh mô hình hoặc thực hiện một lệnh gọi khác đến mô hình tạo sinh để yêu cầu mô hình này dọn dẹp JSON.
Nhưng có một cách xác định hơn! Hãy tìm hiểu cách sử dụng tính năng gọi hàm trong Gemini để truy vấn thông tin trong các dịch vụ bên ngoài và trả về các câu trả lời phù hợp cho người dùng cuối.
5. Cách hoạt động của tính năng gọi hàm
Trước khi bắt đầu với việc trích xuất tham số và gọi hàm, hãy xem các bước gọi hàm và những thành phần được dùng trong thời gian chạy.

Hoạt động đầu vào của người dùng cho Gemini API
Câu lệnh của người dùng được gửi đến Gemini API. Trong lệnh gọi API đó đến mô hình Gemini, nhà phát triển đã xác định một hoặc nhiều khai báo hàm trong một công cụ để mô hình Gemini biết những hàm mà mô hình có thể gọi và cách gọi các hàm đó.
Gemini API trả về một Lệnh gọi hàm
Dựa trên nội dung của hoạt động đầu vào của người dùng và câu lệnh, Gemini sẽ trả về một phản hồi lệnh gọi hàm có dữ liệu có cấu trúc, bao gồm tên của hàm cần gọi và các tham số tương ứng cần sử dụng.
Đưa ra yêu cầu API
Sau đó, bạn sẽ sử dụng tên hàm và các tham số để thực hiện một yêu cầu API nhằm truy xuất thông tin từ một hệ thống hoặc API bên ngoài. Yêu cầu và phản hồi API này do nhà phát triển triển khai trong mã xử lý ứng dụng và diễn ra bên ngoài phạm vi của Gemini API và SDK. Ví dụ: bạn có thể sử dụng thư viện requests trong Python để gọi một API REST và nhận phản hồi JSON. Hoặc bạn có thể gọi hàm bằng phương pháp và thư viện ứng dụng mà bạn muốn.
Trả về Phản hồi API cho Gemini
Cuối cùng, bạn sẽ truyền phản hồi API trở lại mô hình Gemini để mô hình này có thể tạo phản hồi cho câu lệnh ban đầu của người dùng cuối hoặc gọi một phản hồi Lệnh gọi hàm khác nếu mô hình Gemini xác định rằng mô hình này cần thêm thông tin.
6. Chọn API
Giờ đây, khi đã hiểu được quy trình tổng thể và các bước cụ thể trong lệnh gọi hàm, bạn sẽ xây dựng một quy trình AI tạo sinh để tìm nạp tỷ giá hối đoái mới nhất. Trước tiên, chúng ta cần chọn API mà chúng ta muốn sử dụng làm nguồn thông tin.
Đối với ứng dụng chuyển đổi tiền tệ, chúng ta sẽ sử dụng API REST tại https://www.frankfurter.app/ để tìm nạp thông tin mới nhất về tỷ giá hối đoái toàn cầu.
Để tương tác với API REST này, chúng ta có thể thực hiện một lệnh gọi API REST bằng requests trong Python như sau:
import requests
url = "https://api.frankfurter.app/latest"
response = requests.get(url)
response.text
hoặc yêu cầu cURL, chẳng hạn như:
curl https://api.frankfurter.app/latest
thao tác này sẽ trả về một phản hồi tương tự như:
{
"amount": 1,
"base": "EUR",
"date": "2023-12-20",
"rates": {
"AUD": 1.6186, "BGN": 1.9558, "BRL": 5.3287,
"CAD": 1.4609, "CHF": 0.946, "CNY": 7.8121,
"CZK": 24.538, "DKK": 7.4565, "GBP": 0.86555,
"HKD": 8.5439, "HUF": 385.23, "IDR": 16994,
"ILS": 3.9983, "INR": 91.06, "ISK": 150.3,
"JPY": 157.12, "KRW": 1425.62, "MXN": 18.6867,
"MYR": 5.0977, "NOK": 11.2895, "NZD": 1.7421,
"PHP": 60.991, "PLN": 4.3413, "RON": 4.9699,
"SEK": 11.129, "SGD": 1.4562, "THB": 38.252,
"TRY": 31.883, "USD": 1.0944, "ZAR": 20.111
}
}
Vì tính năng gọi hàm trong Gemini không thực sự thực hiện lệnh gọi API bên ngoài cho bạn, nên không có những hạn chế như vậy về loại API mà bạn sử dụng! Bạn có thể sử dụng Dịch vụ Cloud Run, Cloud Functions, yêu cầu API đến một dịch vụ của Google Cloud hoặc bất kỳ API REST bên ngoài nào.
7. Xác định hàm và công cụ
Giờ đây, sau khi bạn chọn một API REST để sử dụng, chúng ta có thể xác định một quy cách API và đăng ký hàm trong một công cụ.
Đảm bảo bạn đã cài đặt phiên bản mới nhất của Vertex AI SDK cho Python.
Sau đó, hãy nhập các mô-đun cần thiết từ Python SDK và khởi chạy mô hình Gemini:
from vertexai.generative_models import (
Content,
FunctionDeclaration,
GenerativeModel,
Part,
Tool,
)
model = GenerativeModel("gemini-1.5-pro-001")
Quay lại API REST tại https://api.frankfurter.app/, chúng ta có thể thấy rằng API này chấp nhận các tham số đầu vào sau:
Tham số | Loại | Mô tả |
| Chuỗi | Đơn vị tiền tệ cần quy đổi |
| Chuỗi | Đơn vị tiền tệ cần chuyển đổi |
| Chuỗi | Ngày lấy tỷ giá hối đoái |
Khi sử dụng các tham số này, một quy cách OpenAPI một phần cho API REST này ở định dạng YAML sẽ có dạng như sau:
openapi: 3.0.0
info:
title: Frankfurter Exchange Rate API
description: This API provides current and historical exchange rates
version: 1.0.0
servers:
- url: https://api.frankfurter.app
paths:
/{date}:
get:
summary: Get the latest currency exchange rates.
parameters:
- name: date
in: path
description: Get currency rates for a specific date or 'latest' if a date is not specified
required: true
schema:
type: string
- name: from
in: query
description: The currency to convert from.
required: true
schema:
type: string
- name: to
in: query
description: The currency to convert to.
schema:
type: string
Bây giờ, hãy đăng ký tham số này dưới dạng FunctionDeclaration bằng Python SDK cho Gemini:
get_exchange_rate_func = FunctionDeclaration(
name="get_exchange_rate",
description="Get the exchange rate for currencies between countries",
parameters={
"type": "object",
"properties": {
"currency_date": {
"type": "string",
"description": "A date that must always be in YYYY-MM-DD format or the value 'latest' if a time period is not specified"
},
"currency_from": {
"type": "string",
"description": "The currency to convert from in ISO 4217 format"
},
"currency_to": {
"type": "string",
"description": "The currency to convert to in ISO 4217 format"
}
},
"required": [
"currency_from",
"currency_date",
]
},
)
Hãy nhớ sử dụng càng nhiều thông tin chi tiết càng tốt trong nội dung mô tả hàm và tham số vì mô hình tạo sinh sẽ sử dụng thông tin này để xác định hàm cần chọn và cách điền tham số trong lệnh gọi hàm.
Cuối cùng, bạn sẽ xác định một Tool bao gồm nội dung khai báo hàm:
exchange_rate_tool = Tool(
function_declarations=[get_exchange_rate_func],
)
Ở đây, bạn đang sử dụng một khai báo hàm trong một công cụ, nhưng lưu ý rằng bạn có thể đăng ký một hoặc nhiều khai báo hàm trong một công cụ và mô hình sẽ chọn hàm thích hợp để sử dụng trong thời gian chạy. Hãy tham khảo tài liệu về Tính năng gọi hàm trong Gemini API để biết thêm thông tin chi tiết về FunctionDeclaration, Tool và các lớp có liên quan trong Gemini SDK cho Python.
Bạn đã hoàn tất việc định cấu hình các định nghĩa về hàm và công cụ. Trong phần tiếp theo, chúng ta sẽ gọi mô hình tạo sinh bằng công cụ này và nhận lại một lệnh gọi hàm mà chúng ta có thể dùng để gọi API REST.
8. Tạo một lệnh gọi hàm
Giờ đây, bạn có thể nhắc mô hình tạo sinh và đưa tool mà bạn đã xác định vào:
prompt = """What is the exchange rate from Australian dollars to Swedish krona?
How much is 500 Australian dollars worth in Swedish krona?"""
response = model.generate_content(
prompt,
tools=[exchange_rate_tool],
)
Hãy xem xét đối tượng phản hồi:
print(response.candidates[0].content)
role: "model"
parts {
function_call {
name: "get_exchange_rate"
args {
fields {
key: "currency_to"
value {
string_value: "SEK"
}
}
fields {
key: "currency_from"
value {
string_value: "AUD"
}
}
fields {
key: "currency_date"
value {
string_value: "latest"
}
}
}
}
}
Có vẻ như mô hình đã chọn một hàm có sẵn và trả về một lệnh gọi hàm cho hàm get_exchange_rate cùng với các tham số. Các tham số này có định dạng chính xác mà chúng tôi muốn. Chúc mừng bạn đã nhận được các câu trả lời có cấu trúc từ các mô hình tạo sinh!
Trong phần tiếp theo, bạn sẽ sử dụng thông tin trong phản hồi để đưa ra một yêu cầu API.
9. Đưa ra yêu cầu API
Xin lưu ý rằng tính năng gọi hàm trong Gemini không thực sự thực hiện lệnh gọi API bên ngoài cho bạn. Thay vào đó, bạn có thể thoải mái sử dụng bất kỳ ngôn ngữ, thư viện hoặc khung nào mà bạn muốn!
Tại đây, bạn sẽ sử dụng thư viện requests trong Python để gọi API REST về tỷ giá hối đoái.
Hãy giải nén phản hồi thành một từ điển Python:
params = {}
for key, value in response.candidates[0].content.parts[0].function_call.args.items():
params[key[9:]] = value
params
Giờ đây, chúng ta có thể gọi requests hoặc bất kỳ phương thức nào khác:
import requests
url = f"https://api.frankfurter.app/{params['date']}"
api_response = requests.get(url, params=params)
api_response.text
Điều này dẫn đến một phản hồi tương tự như:
'{"amount":1.0,"base":"AUD","date":"2024-01-16","rates":{"SEK":6.8682}}'
Và chúng ta có phản hồi từ API REST, với thông tin tỷ giá hối đoái mới nhất của ngày hôm nay. Trong phần tiếp theo, chúng ta sẽ truyền thông tin này trở lại mô hình để mô hình có thể tạo ra câu trả lời phù hợp cho người dùng.
10. Tạo câu trả lời
Cuối cùng, hãy tạo một câu trả lời cho người dùng bằng cách truyền lại câu trả lời của hàm cho mô hình trong lượt trò chuyện tiếp theo:
response = model.generate_content(
[
Content(role="user", parts=[
Part.from_text(prompt + """Give your answer in steps with lots of detail
and context, including the exchange rate and date."""),
]),
Content(role="function", parts=[
Part.from_dict({
"function_call": {
"name": "get_exchange_rate",
}
})
]),
Content(role="function", parts=[
Part.from_function_response(
name="get_exchange_rate",
response={
"content": api_response.text,
}
)
]),
],
tools=[exchange_rate_tool],
)
response.candidates[0].content.parts[0].text
Sau khi chúng ta chuyển phản hồi của hàm trở lại mô hình, mô hình sẽ phản hồi câu lệnh của người dùng cùng với thông tin liên quan từ phản hồi của API.
The exchange rate from Australian dollars to Swedish krona on January 16, 2024, is 1 Australian dollar is equal to 6.8663 Swedish krona. So, 500 Australian dollars would be worth 500 * 6.8663 = 3,433.15 Swedish krona.
11. Xem ví dụ đầy đủ về mã
Tại thời điểm này, bạn có thể đặt mã Python của mình vào một API phụ trợ bằng cách sử dụng dịch vụ Cloud Run, Cloud Function hoặc một dịch vụ Cloud khác và triển khai một ứng dụng giao diện người dùng sử dụng API phụ trợ này để thực hiện các truy vấn mô hình và lệnh gọi API.
Sau đây là ví dụ về đoạn mã đầy đủ cho giải pháp cuối cùng của chúng ta:
import requests
from vertexai.generative_models import (
Content,
FunctionDeclaration,
GenerativeModel,
Part,
Tool,
)
model = GenerativeModel("gemini-1.5-pro-001")
get_exchange_rate_func = FunctionDeclaration(
name="get_exchange_rate",
description="Get the exchange rate for currencies between countries",
parameters={
"type": "object",
"properties": {
"currency_date": {
"type": "string",
"description": "A date that must always be in YYYY-MM-DD format or the value 'latest' if a time period is not specified"
},
"currency_from": {
"type": "string",
"description": "The currency to convert from in ISO 4217 format"
},
"currency_to": {
"type": "string",
"description": "The currency to convert to in ISO 4217 format"
}
},
"required": [
"currency_from",
"currency_date",
]
},
)
exchange_rate_tool = Tool(
function_declarations=[get_exchange_rate_func],
)
prompt = """What is the exchange rate from Australian dollars to Swedish krona?
How much is 500 Australian dollars worth in Swedish krona?"""
response = model.generate_content(
prompt,
tools=[exchange_rate_tool],
)
response.candidates[0].content
params = {}
for key, value in response.candidates[0].content.parts[0].function_call.args.items():
params[key[9:]] = value
params
import requests
url = f"https://api.frankfurter.app/{params['date']}"
api_response = requests.get(url, params=params)
api_response.text
response = model.generate_content(
[
Content(role="user", parts=[
Part.from_text(prompt + """Give your answer in steps with lots of detail
and context, including the exchange rate and date."""),
]),
Content(role="function", parts=[
Part.from_dict({
"function_call": {
"name": "get_exchange_rate",
}
})
]),
Content(role="function", parts=[
Part.from_function_response(
name="get_exchange_rate",
response={
"content": api_response.text,
}
)
]),
],
tools=[exchange_rate_tool],
)
response.candidates[0].content.parts[0].text
Trong quá trình triển khai này, chúng tôi đã sử dụng 2 yêu cầu đối với mô hình tạo sinh: một yêu cầu để tạo lệnh gọi hàm và một yêu cầu khác để trả về phản hồi của hàm. Xin lưu ý rằng đây chỉ là một phương thức xử lý lệnh gọi hàm và phản hồi hàm bằng Gemini. Bạn cũng có thể thực hiện các lệnh gọi hàm bổ sung để nhận thêm thông tin cho truy vấn của mình hoặc sử dụng tính năng gọi hàm với các phương thức trò chuyện và không đồng bộ.
Để xem thêm các mẫu mã, hãy tham khảo sổ tay mẫu để gọi hàm trong Gemini.
12. Xin chúc mừng
Khi sử dụng tính năng gọi hàm trong Gemini, bạn đã tạo thành công một quy trình AI tạo sinh sử dụng Vertex AI Gemini API và Python! Người dùng có thể hỏi về tỷ giá hối đoái và hệ thống sẽ tìm nạp dữ liệu mới nhất từ một API bên ngoài rồi trả lời.
Khi nhận được câu lệnh từ người dùng cuối, tính năng gọi hàm trong Gemini sẽ chọn hàm phù hợp, trích xuất các tham số từ câu lệnh và trả về một đối tượng dữ liệu có cấu trúc để bạn thực hiện lệnh gọi API bên ngoài.
Thiết kế của tính năng gọi hàm trong Gemini nhằm mang đến cho bạn cả hai lợi ích để trích xuất các tham số một cách xác định, đồng thời để mô hình tạo sinh thực hiện việc tóm tắt và tạo nội dung. Bạn có thể dùng thử các API và câu lệnh khác trong quy trình của mình, đồng thời khám phá các chức năng khác có liên quan đến Gemini API trong Vertex AI.

Dọn dẹp
Bạn có thể thực hiện các bước dọn dẹp sau đây để tránh bị tính phí cho Tài khoản Google Cloud của mình đối với các tài nguyên được dùng trong lớp học lập trình này:
- Để tránh các khoản phí không cần thiết trên Google Cloud, hãy sử dụng Bảng điều khiển Google Cloud để xoá dự án nếu bạn không cần đến dự án đó.
- Nếu bạn muốn tắt các API cho Vertex AI, hãy chuyển đến trang Chi tiết dịch vụ Vertex AI API rồi nhấp vào Tắt API và xác nhận.
Tìm hiểu thêm
Tiếp tục tìm hiểu về AI đàm thoại và AI tạo sinh thông qua các hướng dẫn và tài nguyên sau:
- Tổng quan về các mô hình Gemini
- Tài liệu về tính năng gọi hàm trong Gemini
- Sổ tay mẫu để gọi hàm trong Gemini
- Sổ tay mẫu cho Gemini
- AI tạo sinh trong Google Cloud
Giấy phép
Tác phẩm này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 Chung.