Skip to main content

Google Gemini oracles for Robot Framework: text-only and multimodal (image) assertions.

Project description

robotframework-gemini

Biblioteca de keywords do Robot Framework para oráculos com Google Gemini: avaliação só texto (API, logs, JSON, etc.) ou multimodal com imagem (arquivo PNG ou captura do Robot Framework Browser).

  • Multimodal: envia o texto do prompt e a captura como Part em bytes (google-genai).
  • Fluxo recomendado: duas entradas — contexto (enquadramento do teste) e avaliação (critério ou pergunta objetiva).
  • Browser opcional: keywords de screenshot exigem Library Browser; keywords de texto funcionam sem navegador.

Instalação

pip install robotframework-gemini

Com suporte a captura via Robot Framework Browser (Playwright):

pip install "robotframework-gemini[browser]"
python -m pip install robotframework

Desenvolvimento local:

python -m pip install -e ".[dev]"

Variáveis de ambiente e importação da Library

Variável / argumento Função
GEMINI_API_KEY Chave da API Gemini (obrigatória se não passar api_key na Library)
GEMINI_MODEL Modelo (ex.: gemini-3.1-flash-lite). Se omitido, usa gemini-2.5-flash.
api_key (import) Sobrescreve GEMINI_API_KEY na importação da Library
model (import) Sobrescreve GEMINI_MODEL na importação da Library

Por padrão, a Library lê chave e modelo das variáveis de ambiente. Você também pode passá-los na importação (útil em CI ou suítes com credenciais em variáveis Robot):

*** Variables ***
${GEMINI_API_KEY}    %{GEMINI_API_KEY}
${GEMINI_MODEL}      gemini-2.5-flash-lite

*** Settings ***
Library    GeminiLibrary    api_key=${GEMINI_API_KEY}    model=${GEMINI_MODEL}

Só o modelo (chave continua vinda do ambiente):

Library    GeminiLibrary    model=gemini-2.5-flash

Import explícito (equivalente):

Library    robotframework_gemini.library.GeminiLibrary    api_key=${GEMINI_API_KEY}    model=${GEMINI_MODEL}

Evite commitar a chave literal no repositório; prefira %{GEMINI_API_KEY} ou secrets do CI.

Documentação de Keywords

Uso no Robot Framework

Nota: os exemplos usam Set Variable e Catenate em vez da keyword VAR (Robot Framework 7.0+) para manter retrocompatibilidade com versões anteriores do Robot Framework.

Só texto (sem Browser)

*** Settings ***
Library    GeminiLibrary

*** Keywords ***
Validar resposta da API
    ${context}=       Set Variable    {"status": "ok", "items": 3}
    ${evaluation}=    Set Variable    O payload indica sucesso com itens?
    ${model_response}=    Gemini Evaluate Text    ${context}    ${evaluation}
    Log    ${model_response}

Com captura de tela (Browser)

Declare a biblioteca Browser antes de Gemini:

*** Settings ***
Library    Browser
Library    GeminiLibrary

*** Keywords ***
Checar tela por critério neutro
    ${context}=       Set Variable    Lista filtrada por status Ativo.
    ${evaluation}=    Set Variable    Todos os itens visíveis mostram status Ativo?
    ${model_response}=    Gemini Evaluate With Screen    ${context}    ${evaluation}
    Log    ${model_response}

Import recomendado (RobotCode, runtime e PyPI):

Library    GeminiLibrary    api_key=${GEMINI_API_KEY}    model=${GEMINI_MODEL}

Import explícito do pacote (IDEs que preferem o caminho completo):

Library    robotframework_gemini.library.GeminiLibrary    api_key=${GEMINI_API_KEY}    model=${GEMINI_MODEL}

IDE e RobotCode

Forma de import Quem resolve
Library GeminiLibrary Módulo top-level GeminiLibrary.py (instalado no wheel ou via src/ no clone)
Library robotframework_gemini.library.GeminiLibrary Pacote Python padrão

No clone do repositório, sem instalar:

Com venv local: pip install -e ".[dev]" e recarregue a janela do IDE após mudanças.

Com arquivo já salvo:

Browser.Take Screenshot    ${OUTPUT_DIR}/tela.png
${model_response}=    Gemini Evaluate With Image File    ${context}    ${evaluation}    ${OUTPUT_DIR}/tela.png

Veredito via prompt (primeira linha) e nota 1–5:

${model_response}=    Gemini Evaluate With Screen    ${context}    ${evaluation}
...    extra_instructions=Responda com uma palavra na primeira linha: Sim ou Não.
${verdict}=    Get Line    ${model_response}    0
Should Be Equal As Strings    ${verdict}    Sim

# Nota 1–5: duas etapas (log da justificativa) ou atalho em uma linha
${model_response}=    Gemini Evaluate Text Rating    ${context}    ${evaluation}
${rating_score}=    Gemini Parse Rating    ${model_response}

${rating_score}=    Gemini Evaluate Text Rating Score    ${context}    ${evaluation}

Detalhes das três keywords de nota: Notas 1–5 (pt-BR).

Consulte também examples/demo_template.robot.

Testes

pytest

Os testes usam mocks de generate_content; não há chamadas reais à API.

Licença

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework_gemini-0.3.2.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robotframework_gemini-0.3.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file robotframework_gemini-0.3.2.tar.gz.

File metadata

  • Download URL: robotframework_gemini-0.3.2.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robotframework_gemini-0.3.2.tar.gz
Algorithm Hash digest
SHA256 bde70f48db1cbdbaf0e7d5b61e84018189f69a4bfa05083ef1cef2cdc7d9153c
MD5 6bd3e31229ad7c2d387ecaf48fbaceaf
BLAKE2b-256 931524dd33b7e1bb0b8a7f794e127c4377fda6eadbc8677f665d16c107a828ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for robotframework_gemini-0.3.2.tar.gz:

Publisher: publish.yml on carlosnizolli/robotframework-gemini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file robotframework_gemini-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_gemini-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a947b52b0e56420d928917537edc4ba93892f28d4b8e9465f0abcbbd766e1648
MD5 a12759c1f129f61974654e57d24414da
BLAKE2b-256 a06c6dd3e5dc4f6e75cc886e8081b0ba708dd06ade78972c275e5bb8237a0f22

See more details on using hashes here.

Provenance

The following attestation bundles were made for robotframework_gemini-0.3.2-py3-none-any.whl:

Publisher: publish.yml on carlosnizolli/robotframework-gemini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page