Gemini API cung cấp cho bạn quyền truy cập vào các mô hình tạo sinh mới nhất của Google. Sau khi đã quen với các tính năng chung được cung cấp cho bạn thông qua API, hãy thử xem hướng dẫn về ngôn ngữ bạn chọn để bắt đầu phát triển.
Mô hình
Gemini là một loạt mô hình AI tạo sinh đa phương thức do Google phát triển. Các mô hình Gemini có thể chấp nhận văn bản và hình ảnh trong các câu lệnh, tuỳ thuộc vào biến thể mô hình mà bạn chọn và xuất câu trả lời bằng văn bản.
Để biết thêm thông tin chi tiết về mô hình, vui lòng tham khảo trang Mô hình Gemini. Bạn cũng có thể sử dụng phương thức
list_models
để liệt kê tất cả
mô hình có sẵn, sau đó sử dụng phương thức
get_model
để lấy siêu dữ liệu cho một mô hình cụ thể.
Thiết kế và dữ liệu lời nhắc
Một số mô hình Gemini cụ thể chấp nhận cả dữ liệu văn bản và tệp đa phương tiện làm dữ liệu đầu vào. Khả năng này mang đến thêm nhiều khả năng để tạo nội dung, phân tích dữ liệu và giải quyết vấn đề. Có một số giới hạn và yêu cầu cần xem xét, bao gồm cả giới hạn chung về mã thông báo đầu vào cho mô hình bạn đang sử dụng. Để biết thông tin về hạn mức mã thông báo cho các mô hình cụ thể, hãy xem bài viết Các mô hình Gemini.
Các câu lệnh sử dụng Gemini API không được có kích thước vượt quá 20 MB. Gemini API cung cấp một File API (API Tệp) để tạm thời lưu trữ các tệp nội dung nghe nhìn để sử dụng trong câu lệnh, cho phép bạn cung cấp dữ liệu lời nhắc vượt quá giới hạn 20 MB. Để biết thêm thông tin về cách sử dụng API Files và các định dạng tệp được hỗ trợ để nhắc, hãy xem bài viết Lời nhắc bằng tệp nội dung nghe nhìn.
Thiết kế câu lệnh và nhập văn bản
Việc tạo các câu lệnh hoặc kỹ thuật câu lệnh hiệu quả là sự kết hợp giữa nghệ thuật và khoa học. Hãy xem phần giới thiệu về cách nhắc để được hướng dẫn về cách tiếp cận tính năng nhắc và hướng dẫn về lời nhắc 101 để tìm hiểu về các phương pháp nhắc.
Sáng tạo nội dung
Gemini API cho phép bạn sử dụng cả dữ liệu văn bản và hình ảnh để nhắc, tuỳ thuộc vào biến thể mô hình mà bạn sử dụng. Ví dụ: bạn có thể tạo văn bản từ các câu lệnh chỉ có văn bản hoặc các câu lệnh đa phương thức bằng mô hình Gemini 1.5. Phần này đưa ra các mã ví dụ cơ bản cho từng mã. Hãy tham khảo tài liệu tham khảo API generateContent
để biết ví dụ chi tiết hơn bao gồm tất cả các tham số.
Nhập văn bản và hình ảnh
Bạn có thể gửi câu lệnh dạng văn bản có hình ảnh đến mô hình Gemini 1.5 để thực hiện một nhiệm vụ liên quan đến thị giác. Ví dụ: thêm chú thích cho hình ảnh hoặc nhận dạng hình ảnh đó trong một hình ảnh.
Các ví dụ về mã sau đây minh hoạ cách triển khai cơ bản của câu lệnh dạng văn bản và hình ảnh cho từng ngôn ngữ được hỗ trợ:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
cookie_picture = {
'mime_type': 'image/png',
'data': pathlib.Path('cookie.png').read_bytes()
}
prompt = "Do these look store-bought or homemade?"
response = model.generate_content(
contents=[prompt, cookie_picture]
)
print(response.text)
Xem hướng dẫn về Python để xem đoạn mã hoàn chỉnh.
Go
vmodel := client.GenerativeModel("gemini-1.5-flash")
data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
log.Fatal(err)
}
Xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Hãy xem hướng dẫn về Node.js để biết ví dụ đầy đủ.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: base64EncodedImage /* see JavaScript quickstart for details */,
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.
Phi tiêu (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
Content.multi([
TextPart(prompt),
DataPart('image/png', imageBytes),
])
];
final response = await model.generateContent(content);
print(response.text);
Hãy xem hướng dẫn vềDart (Flutter) để biết ví dụ đầy đủ.
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"
let response = try await model.generateContent(prompt, cookieImage)
Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val cookieImage: Bitmap = // ...
val inputContent = content() {
image(cookieImage)
text("Do these look store-bought or homemade?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
Hãy xem hướng dẫn Android để biết ví dụ đầy đủ.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
-X POST \
-d @<(echo'{
"contents":[
{ "parts":[
{"text": "Do these look store-bought or homemade?"},
{ "inlineData": {
"mimeType": "image/png",
"data": "'$(base64 -w0 cookie.png)'"
}
}
]
}
]
}')
Hãy xem hướng dẫn về API REST để biết thêm thông tin chi tiết.
Mục nhập chỉ bằng văn bản
Gemini API cũng có thể xử lý dữ liệu nhập chỉ có văn bản. Tính năng này cho phép bạn thực hiện các nhiệm vụ xử lý ngôn ngữ tự nhiên (NLP) như hoàn tất và tóm tắt văn bản.
Các mã ví dụ sau đây minh hoạ cách triển khai cơ bản của lời nhắc chỉ có văn bản cho từng ngôn ngữ được hỗ trợ:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
prompt = "Write a story about a magic backpack."
response = model.generate_content(prompt)
Xem hướng dẫn về Python để biết ví dụ đầy đủ.
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
log.Fatal(err)
}
Xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Hãy xem hướng dẫn về Node.js để biết ví dụ đầy đủ.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.
Phi tiêu (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
Hãy xem hướng dẫn vềDart (Flutter) để biết ví dụ đầy đủ.
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let response = try await model.generateContent(prompt)
Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)
Hãy xem hướng dẫn Android để biết ví dụ đầy đủ.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[
{ "parts":[{"text": "Write a story about a magic backpack"}]}
]
}'
Hãy xem hướng dẫn về API REST để biết thêm thông tin chi tiết.
Cuộc trò chuyện nhiều lượt (trò chuyện)
Bạn có thể sử dụng Gemini API để xây dựng trải nghiệm trò chuyện mang tính tương tác cho người dùng của mình. Việc sử dụng tính năng trò chuyện của API cho phép bạn thu thập nhiều vòng câu hỏi và câu trả lời, cho phép người dùng dần xác định câu trả lời hoặc yêu cầu trợ giúp cho các vấn đề gồm nhiều phần. Đây là tính năng lý tưởng cho các ứng dụng yêu cầu giao tiếp liên tục, chẳng hạn như bot trò chuyện, trợ lý tương tác hoặc trợ lý hỗ trợ khách hàng.
Các mã ví dụ sau đây minh hoạ cách triển khai cơ bản của hoạt động tương tác trò chuyện cho từng ngôn ngữ được hỗ trợ:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
response = chat.send_message(
"Pretend you\'re a snowman and stay in character for each response.")
print(response.text)
response = chat.send_message(
"What\'s your favorite season of the year?")
print(response.text)
Hãy xem bản minh hoạ trò chuyện trong hướng dẫn về Python để biết ví dụ đầy đủ.
Go
model := client.GenerativeModel("gemini-1.5-flash")
cs := model.StartChat()
cs.History = []*genai.Content{
&genai.Content{
Parts: []genai.Part{
genai.Text("Pretend you're a snowman and stay in character for each response."),
},
Role: "user",
},
&genai.Content{
Parts: []genai.Part{
genai.Text("Hello! It's cold! Isn't that great?"),
},
Role: "model",
},
}
resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
log.Fatal(err)
}
Hãy xem bản minh hoạ cuộc trò chuyện trong Hướng dẫn bắt đầu để biết toàn bộ ví dụ.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Hãy xem bản minh hoạ trò chuyện trong hướng dẫn về Node.js để biết ví dụ đầy đủ.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's so cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn trên web để biết ví dụ đầy đủ.
Phi tiêu (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final chat = model.startChat(history: [
Content.text(
"Pretend you're a snowman and stay in character for each response."),
Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);
Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn về Dar nhất (Flutter) để biết ví dụ đầy đủ.
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let chat = model.startChat()
var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)
message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)
Hãy xem bản minh hoạ cuộc trò chuyện trong hướng dẫn Swift để biết ví dụ đầy đủ.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
character for each response.")
print(response.text)
Hãy xem hướng dẫn Android để biết ví dụ đầy đủ.
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [ {"role":"user", "parts":[{ "text": "Pretend you're a snowman and stay in character for each {"role": "model", response."}]}, "parts":[{ "text": "Hello! It's so cold! Isn't that great?"}]}, {"role": "user", "parts":[{ "text": "What\'s your favorite season of the year?"}]}, ] }' 2> /dev/null | grep "text"
# response example: "text": "Winter, of course!"
Hãy xem hướng dẫn về API REST để biết thêm thông tin chi tiết.
Tạo câu trả lời đồng thời
Gemini API cung cấp một cách khác để nhận câu trả lời từ các mô hình AI tạo sinh: dưới dạng luồng dữ liệu. Phản hồi được truyền trực tuyến sẽ gửi các phần dữ liệu gia tăng trở lại ứng dụng của bạn ngay khi mô hình tạo. Tính năng này cho phép bạn phản hồi nhanh yêu cầu của người dùng để hiển thị tiến trình và tạo trải nghiệm có tính tương tác cao hơn.
Câu trả lời theo thời gian thực là một lựa chọn để đưa ra câu lệnh dạng tự do và trò chuyện bằng các mô hình Gemini. Các ví dụ về mã sau đây cho thấy cách yêu cầu một phản hồi được truyền trực tuyến cho một lời nhắc đối với từng ngôn ngữ được hỗ trợ:
Python
prompt = "Write a story about a magic backpack."
response = genai.stream_generate_content(
model="models/gemini-1.5-flash",
prompt=prompt
)
Xem hướng dẫn về Python để xem đoạn mã hoàn chỉnh.
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
resp, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
// print resp
}
Xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Hãy xem hướng dẫn về Node.js để biết ví dụ đầy đủ.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.
Phi tiêu (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
print(chunk.text);
}
Hãy xem hướng dẫn vềDart (Flutter) để biết ví dụ đầy đủ.
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let stream = model.generateContentStream(prompt)
for try await chunk in stream {
print(chunk.text ?? "No content")
}
Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val inputContent = content {
text("Write a story about a magic backpack.")
}
var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
fullResponse += chunk.text
}
Hãy xem hướng dẫn Android để biết ví dụ đầy đủ.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:streamGenerateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[
{"role": "user",
"parts":[{"text": "Write a story about a magic backpack."}]
}
]
}' > response.json
Hãy xem hướng dẫn về API REST để biết thêm thông tin chi tiết.
Phản hồi ở định dạng JSON
Tuỳ thuộc vào ứng dụng của mình, bạn nên trả về phản hồi cho lời nhắc ở định dạng dữ liệu có cấu trúc, đặc biệt là khi bạn đang dùng các phản hồi để điền sẵn các giao diện lập trình. Gemini API cung cấp một tham số cấu hình để yêu cầu phản hồi ở định dạng JSON.
Bạn có thể có JSON đầu ra của mô hình bằng cách đặt tuỳ chọn cấu hình response_mime_type
thành application/json
và trong lời nhắc, hãy mô tả định dạng JSON bạn muốn trong phản hồi:
Python
model = genai.GenerativeModel('gemini-1.5-flash',
generation_config={"response_mime_type": "application/json"})
prompt = """
List 5 popular cookie recipes.
Using this JSON schema:
Recipe = {"recipe_name": str}
Return a `list[Recipe]`
"""
response = model.generate_content(prompt)
print(response.text)
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "\nList 5 popular cookie recipes.\n\nUsing this JSON schema:\n\n Recipe = {\"recipe_name\": str}\n\nReturn a `list[Recipe]`\n "
}
]
}
]
"generationConfig": {
"response_mime_type": "application/json",
}
}'
Mặc dù các mô hình Flash Gemini 1.5 chỉ chấp nhận nội dung mô tả văn bản của giản đồ JSON mà bạn muốn được trả về, nhưng mô hình Gemini 1.5 Pro cho phép bạn truyền một đối tượng giản đồ (hoặc một đối tượng tương đương với loại Python) và dữ liệu đầu ra của mô hình sẽ tuân thủ nghiêm ngặt giản đồ đó. Quá trình này còn được gọi là tạo có kiểm soát hoặc giải mã có hạn chế.
Ví dụ: để nhận danh sách các đối tượng Recipe
, hãy chuyển list[Recipe]
vào trường response_schema
của đối số generation_config
:
Python
import typing_extensions as typing
class Recipe(typing.TypedDict):
recipe_name: str
model = genai.GenerativeModel(model_name="models/gemini-1.5-pro")
result = model.generate_content(
"List 5 popular cookie recipes",
generation_config=genai.GenerationConfig(response_mime_type="application/json",
response_schema = list[Recipe]))
print(result.text)
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/models/gemini-1.5-pro:generateContent?
-H 'Content-Type: application/json'
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "List 5 popular cookie recipes"
}
]
}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseSchema": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"recipe_name": {
"type": "STRING"
}
}
}
}
}
}'
```
Để tìm hiểu thêm, hãy tham khảo phần Bắt đầu nhanh về chế độ JSON trong Cẩm nang về Gemini API.
Nhúng
Dịch vụ nhúng trong Gemini API tạo ra các mục nhúng hiện đại cho từ, cụm từ và câu. Sau đó, các mục nhúng thu được có thể được dùng cho các tác vụ NLP, chẳng hạn như tìm kiếm ngữ nghĩa, phân loại văn bản và phân cụm, cùng nhiều tính năng khác. Xem hướng dẫn về tính năng nhúng để tìm hiểu khái niệm nhúng và một số trường hợp sử dụng chính của dịch vụ nhúng nhằm giúp bạn bắt đầu.
Các bước tiếp theo
- Làm quen với giao diện người dùng AI Studio của Google AI bằng tính năng bắt đầu nhanh Google AI Studio.
- Dùng thử quyền truy cập phía máy chủ vào Gemini API qua các hướng dẫn về Python, Go hoặc Node.js.
- Bắt đầu xây dựng cho web với hướng dẫn về web.
- Bắt đầu xây dựng ứng dụng di động bằng hướng dẫn về Swift hoặc hướng dẫn về Android.
- Nếu bạn đang là người dùng Google Cloud (hoặc bạn muốn dùng Gemini trên Vertex để khai thác hệ sinh thái mạnh mẽ của Google Cloud), hãy xem bài viết AI tạo sinh trên Vertex AI để tìm hiểu thêm.