Nesta página, mostramos como enviar solicitações de chat para o modelo Gemini 1.0 Pro (gemini-1.0-pro
) usando o console do Google Cloud, a API REST e os SDKs compatíveis. O Gemini 1.0 Pro
oferece suporte a comandos com entrada somente de texto, incluindo tarefas de linguagem natural,
chat de código e texto com várias interações e geração de código. Ela gera texto e código.
O modelo de fundação Gemini 1.0 Pro é um modelo de linguagem grande que se destaca em entender e gerar linguagem. Você pode interagir com o Gemini Pro usando uma resposta e um comando de uma única resposta, ou conversar com ele em uma conversa contínua de vários turnos, até mesmo para compreensão e geração de código.
Para uma lista de idiomas compatíveis com o Gemini 1.0 Pro, consulte as informações do modelo Suporte a idiomas.
Para explorar esse modelo no console, selecione o card de modelo gemini-1.0-pro
no Model Garden.
Se você estiver procurando uma maneira de usar o Gemini diretamente nos seus apps para dispositivos móveis e da Web, confira os SDKs da IA do Google para Android, Swift e Web.
Enviar solicitações de chat
Para testar e iterar em comandos de chat, recomendamos o uso do console do Google Cloud. Para enviar solicitações de maneira programática ao modelo, é possível usar a API REST, o SDK da Vertex AI para Python ou uma das outras bibliotecas e SDKs compatíveis mostrados nas guias a seguir.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.
Respostas com e sem streaming
Escolha se o modelo gera uma resposta com streaming ou sem streaming. O streaming envolve receber respostas a solicitações à medida que são geradas. Ou seja, assim que o modelo gera tokens de saída, eles são enviados. Uma resposta sem streaming a prompts é enviada somente depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o parâmetro stream
em
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para uma resposta que não seja de streaming, remova o parâmetro ou defina-o como False
.
Código de amostra
C#
Antes de testar essa amostra, siga as instruções de configuração para C# Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para C#.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido da IA generativa usando o SDK do Node.js. Para mais informações, consulte a documentação de referência do SDK do Node.js para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo gera uma resposta com streaming ou sem streaming. O streaming envolve receber respostas a prompts à medida que são geradas. Ou seja, assim que o modelo gera tokens de saída, eles são enviados. Uma resposta sem streaming a prompts é enviada somente depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Para uma resposta que não seja de streaming, use o método generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Código de amostra
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI Java para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo gera uma resposta com streaming ou sem streaming. O streaming envolve receber respostas a prompts à medida que são geradas. Ou seja, assim que o modelo gera tokens de saída, eles são enviados. Uma resposta sem streaming a prompts é enviada somente depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Para uma resposta que não seja de streaming, use o método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de amostra
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI para Go para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo gera uma resposta com streaming ou sem streaming. O streaming envolve receber respostas a prompts à medida que são geradas. Ou seja, assim que o modelo gera tokens de saída, eles são enviados. Uma resposta sem streaming a prompts é enviada somente depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para uma resposta que não seja de streaming, use o método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de amostra
REST
É possível usar o REST para enviar um prompt de chat usando a API Vertex AI para enviar uma solicitação POST ao endpoint do modelo do editor.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- GENERATE_RESPONSE_METHOD: o tipo de resposta que você quer que o modelo gere.
Escolha um método que gere como você quer que a resposta do modelo seja retornada:
streamGenerateContent
: a resposta é transmitida conforme é gerada para reduzir a percepção de latência para o público humano.generateContent
: a resposta será retornada depois de ser totalmente gerada.
- LOCATION: a região para processar a solicitação. As opções
disponíveis incluem:
Clique para expandir as regiões disponíveis
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID: o ID do projeto.
- MODEL_ID: o ID do modelo multimodal
que você quer usar. As opções são:
gemini-1.0-pro-002
gemini-1.0-pro-vision-001
gemini-1.5-pro-preview-0409
- ROLE:
o papel em uma conversa associada ao conteúdo. É necessário especificar um papel mesmo em
casos de uso de turno único.
Os valores aceitáveis são os seguintes:
USER
: especifica o conteúdo que é enviado por você.MODEL
: especifica a resposta do modelo.
- TEXT: as instruções de texto a serem incluídas no comando.
- SAFETY_CATEGORY:
a categoria de segurança para a qual configurar um limite. Os valores aceitáveis são os seguintes:
Clique para expandir as categorias de segurança
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD: o limite de bloqueio de respostas que podem pertencer à categoria de segurança especificada com base na probabilidade. Os valores aceitáveis são os seguintes:
Clique para expandir os limites de bloqueio
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
bloqueia mais, eBLOCK_ONLY_HIGH
bloqueia a menor. - SYSTEM_INSTRUCTION: (opcional)
disponível para
gemini-1.0-pro-002
egemini-1.5-pro-preview-0409
. Instruções para o modelo gerar um desempenho melhor. Por exemplo, "Responder da forma mais concisa possível" ou "Imprimir os resultados no formato JSON". - TEMPERATURE:
a temperatura é usada para amostragem durante a geração da resposta, que ocorre quando
topP
etopK
são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de0
significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.
- TOP_P:
o top-p muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais provável (confira o top-K) para o menos provável até que a soma das probabilidades seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de
0,3, 0,2 e 0,1 e o valor de top-P for
0.5
, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
- TOP_K:
o top-k muda a forma como o modelo seleciona tokens para saída. Um top-K de
1
significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de3
significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.
Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
- MAX_OUTPUT_TOKENS: número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.
Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.
- STOP_SEQUENCES:
Especifica uma lista de strings que instrui o modelo a parar de gerar texto se uma das strings for encontrada na resposta. Se uma string aparecer várias vezes na resposta, a resposta truncará quando for encontrada pela primeira vez.
As strings diferenciam maiúsculas de minúsculas.
Por exemplo, se a resposta a seguir for retornada quandostopSequences
não for especificado:
public static string reverse(string myString)
A resposta retornada comstopSequences
definida como["Str", "reverse"]
é:
public static string
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corpo JSON da solicitação:
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "system_instruction": { "parts": [ { "text": "SYSTEM_INSTRUCTION" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte.
Exemplo de comando curl
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": [
{
"role": "user",
"parts": { "text": "Hello!" }
},
{
"role": "model",
"parts": { "text": "Argh! What brings ye to my ship?" }
},
{
"role": "user",
"parts": { "text": "Wow! You are a real-life pirate!" }
}
],
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.9,
"topP": 1,
"candidateCount": 1,
"maxOutputTokens": 2048
}
}'
Console
Para usar o Vertex AI Studio a fim de testar um prompt de chat no console do Google Cloud, faça o seguinte:
- Na seção "Vertex AI" do console do Google Cloud, acesse a seção Idioma do Vertex AI Studio.
- Clique em Bate-papo de texto.
Configure o modelo e os parâmetros:
- Região: selecione a região que você quer usar.
- Modelo: selecione Gemini Pro.
Temperatura: use o controle deslizante ou a caixa de texto para inserir um valor para a temperatura.
A temperatura é usada para amostragem durante a geração da resposta, que ocorre quandotopP
etopK
são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de0
significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.
Limite de token: use o controle deslizante ou a caixa de texto para inserir um valor para o limite de saída máximo.
Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.
- Adicionar sequência de parada: insira uma sequência de parada, que é uma série de caracteres (incluindo espaços) que interrompe a geração de resposta se ela for encontrada pelo modelo. A sequência não é incluída como parte da resposta. Você pode adicionar até cinco sequências de paradas.
- Opcional: para configurar parâmetros avançados, clique em Avançado e
faça a configuração da seguinte maneira:
Clique para abrir as configurações avançadas
Top-K: use o controle deslizante ou a caixa de texto para inserir um valor para "top-K".
O top-k muda a forma como o modelo seleciona tokens para saída. Um top-K de1
significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de3
significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.
Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
- Top-P: use o controle deslizante ou a caixa de texto para inserir um valor para essa parte.
Os tokens são selecionados do mais provável para o menos até que a soma das probabilidades seja igual ao valor do top-P. Para ter menos resultados de variáveis,
defina top-P como
0
.
O console do Google Cloud só oferece suporte a streaming, que envolve o recebimento de respostas aos comandos à medida que são gerados. Você já pode inserir uma mensagem na caixa para iniciar uma conversa com o modelo.
O modelo usa as mensagens anteriores como contexto para novas respostas.
- Opcional: para salvar a solicitação em Minhas solicitações, clique em Salvar.
- Opcional: para receber o código Python ou um comando curl para seu prompt, clique em Ver código.
- Opcional: para limpar todas as mensagens anteriores, clique em Limpar conversa
Usar as instruções de sistema
As instruções de sistema permitem que os usuários orientem o comportamento do modelo com base nas necessidades específicas e nos casos de uso. Ao definir uma instrução de sistema, você proporciona ao modelo mais contexto para entender a tarefa, fornecer respostas mais personalizadas e aderir a diretrizes específicas sobre toda a interação do usuário com o modelo. Para desenvolvedores, o comportamento no nível do produto pode ser especificado nas instruções de sistema, separado dos comandos fornecidos pelos usuários finais.
É possível usar as instruções de sistema de várias maneiras como, por exemplo:
- Definir um perfil ou uma função (para um chatbot, por exemplo)
- Definir o formato de saída (Markdown, YAML etc.)
- Definir o estilo e o tom da saída (por exemplo, nível de detalhes, de formalidade e de leitura desejado)
- Definir metas ou regras para a tarefa (por exemplo, retornar um snippet de código sem mais explicações)
- Fornecer mais contexto para o comando (por exemplo, um limite de conhecimento)
Quando uma instrução de sistema é definida, ela é aplicada a toda a solicitação. Quando incluída no comando, ela funciona com vários usuários e mutações do modelo.
Exemplos de código de instruções de sistema
Confira a seguir um exemplo de especificação de instruções simples de sistema usando o SDK da Vertex AI para Python.
from vertexai.generative_models import GenerativeModel
model = GenerativeModel(
"gemini-1.0-pro-002",
system_instruction=[
"Don't use technical terms in your response",
],
)
print(model.generate_content("Explain gravity"))
Veja a seguir um exemplo de como incluir uma instrução de sistema simples em um comando curl.
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-002"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models:generateContent" -d \
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "randomly select 10 words from a history book"
}
]
}
],
"system_instruction":
{
"parts": [
{
"text": "please print the results in json format."
}
]
},
"generation_config": {
"maxOutputTokens": 2048,
"temperature": 0.4,
"topP": 1,
"topK": 32
}
}
Exemplos de instruções de sistema
Veja a seguir exemplos de comandos de sistema que definem o comportamento esperado do modelo. O primeiro é um comando de sistema para geração de código de front-end, o segundo é um exemplo de caso de uso de análise de sentimento de mercado e o terceiro é um bot de bate-papo do consumidor.
Geração de códigos
- Sistema: você é um especialista em programação especializado em código de renderização para interfaces front-end. Ao descrever um componente de um site que quero criar, retorne o HTML e o CSS necessários para isso. Não forneça uma explicação para esse código. Ofereça também algumas sugestões de design de interface.
- Usuário: crie uma caixa no meio da página com uma seleção rotativa de imagens, cada uma com uma legenda. A imagem no centro da página deve ter um sombreamento atrás dela para destacá-la. Ela também deve estar vinculada a outra página do site. Deixe o URL em branco para que eu possa preenchê-lo.
Análise de sentimento do mercado
Sistema: você é um analista da bolsa de valores que analisa o sentimento do mercado com base em um determinado trecho de notícia. Com base no trecho de notícia, você extrai declarações que afetam o sentimento dos investidores.
Responda no formato JSON e para cada afirmação:
- Dê uma pontuação de 1 a 10 para sugerir se o sentimento é negativo ou positivo (1 é o mais negativo, 10 é o mais positivo, 5 é neutro).
- Repita a instrução.
- Dê uma explicação em uma frase.
Usuário: a Mobileye relatou um acúmulo de inventário em excesso de clientes de nível superior seguindo restrições da cadeia de suprimentos nos últimos anos. Espera-se que a receita do primeiro trimestre caia cerca de 50% em comparação com os US$ 458 milhões gerados um ano antes, antes de normalizar no período restante de 2024, disse Mobileye. A receita prevista da Mobileye para o ano inteiro de 2024 está entre US$ 1,83 bilhão e US$ 1,96 bilhão, em comparação aos US$ 2,08 bilhões esperados no momento para 2023.
Chatbot de música
- Sistema: você responderá como um historiador de música, demonstrando um conhecimento abrangente em diversos gêneros musicais e fornecendo exemplos relevantes. Seu tom será animado e entusiasmado, espalhando a alegria da música. Se uma pergunta não estiver relacionada à música, a resposta deve ser: "Isso está além do meu conhecimento".
- Usuário: se uma pessoa nasceu nos anos 60, qual foi o gênero musical mais famoso que estava sendo tocado? Liste cinco músicas por tópico.
A seguir
- Saiba como enviar solicitações de comandos multimodais.
- Saiba mais sobre as práticas recomendadas de IA responsável e os filtros de segurança da Vertex AI.