robotframework-gemini 0.3.0__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotframework-gemini
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Google Gemini oracles for Robot Framework: text-only and multimodal (image) assertions.
5
5
  Project-URL: Homepage, https://github.com/carlosnizolli/robotframework-gemini
6
6
  Project-URL: Documentation, https://github.com/carlosnizolli/robotframework-gemini#readme
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
34
34
 
35
35
  # robotframework-gemini
36
36
 
37
- Biblioteca **Python** e **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**).
37
+ 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**).
38
38
 
39
39
  - **Multimodal**: envia o texto do prompt e a captura como `Part` em bytes (`google-genai`).
40
40
  - **Fluxo recomendado**: duas entradas — **contexto** (enquadramento do teste) e **avaliação** (critério ou pergunta objetiva).
@@ -59,35 +59,45 @@ Desenvolvimento local:
59
59
  python -m pip install -e ".[dev]"
60
60
  ```
61
61
 
62
- ## Variáveis de ambiente
62
+ ## Variáveis de ambiente e importação da Library
63
63
 
64
- | Variável | Função |
65
- |-------------------|---------------------------------------------|
66
- | `GEMINI_API_KEY` | Chave da API Gemini (obrigatória se não passar `api_key` na Library) |
67
- | `GEMINI_MODEL` | Modelo (ex.: `gemini-2.0-flash`). Se omitido, usa `gemini-2.0-flash`. |
64
+ | Variável / argumento | Função |
65
+ |----------------------|--------|
66
+ | `GEMINI_API_KEY` | Chave da API Gemini (obrigatória se não passar `api_key` na Library) |
67
+ | `GEMINI_MODEL` | Modelo (ex.: `gemini-3.1-flash-lite`). Se omitido, usa `gemini-2.5-flash`. |
68
+ | `api_key` (import) | Sobrescreve `GEMINI_API_KEY` na importação da Library |
69
+ | `model` (import) | Sobrescreve `GEMINI_MODEL` na importação da Library |
68
70
 
69
- ## Uso em Python (`GeminiOrchestrator`)
71
+ 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):
70
72
 
71
- ```python
72
- from pathlib import Path
73
- from robotframework_gemini import GeminiOrchestrator
73
+ ```robot
74
+ *** Variables ***
75
+ ${GEMINI_API_KEY} %{GEMINI_API_KEY}
76
+ ${GEMINI_MODEL} gemini-2.5-flash-lite
74
77
 
75
- orchestrator = GeminiOrchestrator()
76
- context = "Web dashboard with the 'Active' category filter applied."
77
- evaluation = "Do the visible list items match the selected category?"
78
- model_response = orchestrator.evaluate_with_image(context, evaluation, Path("screen.png"))
78
+ *** Settings ***
79
+ Library GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
79
80
  ```
80
81
 
81
- Para formato de saída restrito (ex.: Yes/No), use `extra_instructions`:
82
+ o modelo (chave continua vinda do ambiente):
83
+
84
+ ```robot
85
+ Library GeminiLibrary model=gemini-2.5-flash
86
+ ```
87
+
88
+ Import explícito (equivalente):
82
89
 
83
- ```python
84
- model_response = orchestrator.evaluate_with_text(
85
- context,
86
- evaluation,
87
- extra_instructions="Reply with one word only: Yes or No.",
88
- )
90
+ ```robot
91
+ Library robotframework_gemini.library.GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
89
92
  ```
90
93
 
94
+ > Evite commitar a chave literal no repositório; prefira `%{GEMINI_API_KEY}` ou secrets do CI.
95
+
96
+ ## Documentação de Keywords
97
+
98
+ - Português: [docs/KEYWORDS.pt-BR.md](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.pt-BR.md)
99
+ - English: [docs/KEYWORDS.en.md](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.en.md)
100
+
91
101
  ## Uso no Robot Framework
92
102
 
93
103
  > **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.
@@ -123,12 +133,32 @@ Checar tela por critério neutro
123
133
  Log ${model_response}
124
134
  ```
125
135
 
126
- Import explícito (equivalente):
136
+ Import recomendado (RobotCode, runtime e PyPI):
127
137
 
128
138
  ```robot
129
- Library robotframework_gemini.library.GeminiLibrary
139
+ Library GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
130
140
  ```
131
141
 
142
+ Import explícito do pacote (IDEs que preferem o caminho completo):
143
+
144
+ ```robot
145
+ Library robotframework_gemini.library.GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
146
+ ```
147
+
148
+ ### IDE e RobotCode
149
+
150
+ | Forma de import | Quem resolve |
151
+ |-----------------|--------------|
152
+ | `Library GeminiLibrary` | Módulo top-level `GeminiLibrary.py` (instalado no wheel ou via `src/` no clone) |
153
+ | `Library robotframework_gemini.library.GeminiLibrary` | Pacote Python padrão |
154
+
155
+ No **clone do repositório**, sem instalar:
156
+
157
+ - [`robot.toml`](robot.toml) — `python-path = ["src"]` para RobotCode/LSP
158
+ - [`.vscode/settings.json`](.vscode/settings.json) — `extraPaths` para Pylance/Cursor
159
+
160
+ Com venv local: `pip install -e ".[dev]"` e recarregue a janela do IDE após mudanças.
161
+
132
162
  Com arquivo já salvo:
133
163
 
134
164
  ```robot
@@ -151,19 +181,9 @@ ${rating_score}= Gemini Parse Rating ${model_response}
151
181
  ${rating_score}= Gemini Evaluate Text Rating Score ${context} ${evaluation}
152
182
  ```
153
183
 
154
- Detalhes das três keywords de nota: [`docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar`](docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar).
155
-
156
- Consulte também [`examples/demo_template.robot`](examples/demo_template.robot).
157
-
158
- ## Documentação de Keywords
159
-
160
- - Português: [`docs/KEYWORDS.pt-BR.md`](docs/KEYWORDS.pt-BR.md)
161
- - English: [`docs/KEYWORDS.en.md`](docs/KEYWORDS.en.md)
162
-
163
- ## Compatibilidade
184
+ Detalhes das três keywords de nota: [Notas 1–5 (pt-BR)](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar).
164
185
 
165
- - `BrowserGeminiLibrary` permanece como alias de `GeminiLibrary` para suítes existentes.
166
- - Variáveis legadas (`LLM_API_KEY`, `LLM_API_KEY_LIA`, `LLM_LIA_MODEL`) são mapeadas para `GEMINI_*` ao importar o pacote.
186
+ Consulte também [examples/demo_template.robot](https://github.com/carlosnizolli/robotframework-gemini/blob/main/examples/demo_template.robot).
167
187
 
168
188
  ## Testes
169
189
 
@@ -0,0 +1,164 @@
1
+ # robotframework-gemini
2
+
3
+ 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**).
4
+
5
+ - **Multimodal**: envia o texto do prompt e a captura como `Part` em bytes (`google-genai`).
6
+ - **Fluxo recomendado**: duas entradas — **contexto** (enquadramento do teste) e **avaliação** (critério ou pergunta objetiva).
7
+ - **Browser opcional**: keywords de screenshot exigem `Library Browser`; keywords de texto funcionam sem navegador.
8
+
9
+ ## Instalação
10
+
11
+ ```bash
12
+ pip install robotframework-gemini
13
+ ```
14
+
15
+ Com suporte a captura via Robot Framework Browser (Playwright):
16
+
17
+ ```bash
18
+ pip install "robotframework-gemini[browser]"
19
+ python -m pip install robotframework
20
+ ```
21
+
22
+ Desenvolvimento local:
23
+
24
+ ```bash
25
+ python -m pip install -e ".[dev]"
26
+ ```
27
+
28
+ ## Variáveis de ambiente e importação da Library
29
+
30
+ | Variável / argumento | Função |
31
+ |----------------------|--------|
32
+ | `GEMINI_API_KEY` | Chave da API Gemini (obrigatória se não passar `api_key` na Library) |
33
+ | `GEMINI_MODEL` | Modelo (ex.: `gemini-3.1-flash-lite`). Se omitido, usa `gemini-2.5-flash`. |
34
+ | `api_key` (import) | Sobrescreve `GEMINI_API_KEY` na importação da Library |
35
+ | `model` (import) | Sobrescreve `GEMINI_MODEL` na importação da Library |
36
+
37
+ 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):
38
+
39
+ ```robot
40
+ *** Variables ***
41
+ ${GEMINI_API_KEY} %{GEMINI_API_KEY}
42
+ ${GEMINI_MODEL} gemini-2.5-flash-lite
43
+
44
+ *** Settings ***
45
+ Library GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
46
+ ```
47
+
48
+ Só o modelo (chave continua vinda do ambiente):
49
+
50
+ ```robot
51
+ Library GeminiLibrary model=gemini-2.5-flash
52
+ ```
53
+
54
+ Import explícito (equivalente):
55
+
56
+ ```robot
57
+ Library robotframework_gemini.library.GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
58
+ ```
59
+
60
+ > Evite commitar a chave literal no repositório; prefira `%{GEMINI_API_KEY}` ou secrets do CI.
61
+
62
+ ## Documentação de Keywords
63
+
64
+ - Português: [docs/KEYWORDS.pt-BR.md](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.pt-BR.md)
65
+ - English: [docs/KEYWORDS.en.md](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.en.md)
66
+
67
+ ## Uso no Robot Framework
68
+
69
+ > **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.
70
+
71
+ ### Só texto (sem Browser)
72
+
73
+ ```robot
74
+ *** Settings ***
75
+ Library GeminiLibrary
76
+
77
+ *** Keywords ***
78
+ Validar resposta da API
79
+ ${context}= Set Variable {"status": "ok", "items": 3}
80
+ ${evaluation}= Set Variable O payload indica sucesso com itens?
81
+ ${model_response}= Gemini Evaluate Text ${context} ${evaluation}
82
+ Log ${model_response}
83
+ ```
84
+
85
+ ### Com captura de tela (Browser)
86
+
87
+ Declare a biblioteca **Browser** antes de **Gemini**:
88
+
89
+ ```robot
90
+ *** Settings ***
91
+ Library Browser
92
+ Library GeminiLibrary
93
+
94
+ *** Keywords ***
95
+ Checar tela por critério neutro
96
+ ${context}= Set Variable Lista filtrada por status Ativo.
97
+ ${evaluation}= Set Variable Todos os itens visíveis mostram status Ativo?
98
+ ${model_response}= Gemini Evaluate With Screen ${context} ${evaluation}
99
+ Log ${model_response}
100
+ ```
101
+
102
+ Import recomendado (RobotCode, runtime e PyPI):
103
+
104
+ ```robot
105
+ Library GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
106
+ ```
107
+
108
+ Import explícito do pacote (IDEs que preferem o caminho completo):
109
+
110
+ ```robot
111
+ Library robotframework_gemini.library.GeminiLibrary api_key=${GEMINI_API_KEY} model=${GEMINI_MODEL}
112
+ ```
113
+
114
+ ### IDE e RobotCode
115
+
116
+ | Forma de import | Quem resolve |
117
+ |-----------------|--------------|
118
+ | `Library GeminiLibrary` | Módulo top-level `GeminiLibrary.py` (instalado no wheel ou via `src/` no clone) |
119
+ | `Library robotframework_gemini.library.GeminiLibrary` | Pacote Python padrão |
120
+
121
+ No **clone do repositório**, sem instalar:
122
+
123
+ - [`robot.toml`](robot.toml) — `python-path = ["src"]` para RobotCode/LSP
124
+ - [`.vscode/settings.json`](.vscode/settings.json) — `extraPaths` para Pylance/Cursor
125
+
126
+ Com venv local: `pip install -e ".[dev]"` e recarregue a janela do IDE após mudanças.
127
+
128
+ Com arquivo já salvo:
129
+
130
+ ```robot
131
+ Browser.Take Screenshot ${OUTPUT_DIR}/tela.png
132
+ ${model_response}= Gemini Evaluate With Image File ${context} ${evaluation} ${OUTPUT_DIR}/tela.png
133
+ ```
134
+
135
+ Veredito via prompt (primeira linha) e nota 1–5:
136
+
137
+ ```robot
138
+ ${model_response}= Gemini Evaluate With Screen ${context} ${evaluation}
139
+ ... extra_instructions=Responda com uma palavra na primeira linha: Sim ou Não.
140
+ ${verdict}= Get Line ${model_response} 0
141
+ Should Be Equal As Strings ${verdict} Sim
142
+
143
+ # Nota 1–5: duas etapas (log da justificativa) ou atalho em uma linha
144
+ ${model_response}= Gemini Evaluate Text Rating ${context} ${evaluation}
145
+ ${rating_score}= Gemini Parse Rating ${model_response}
146
+
147
+ ${rating_score}= Gemini Evaluate Text Rating Score ${context} ${evaluation}
148
+ ```
149
+
150
+ Detalhes das três keywords de nota: [Notas 1–5 (pt-BR)](https://github.com/carlosnizolli/robotframework-gemini/blob/main/docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar).
151
+
152
+ Consulte também [examples/demo_template.robot](https://github.com/carlosnizolli/robotframework-gemini/blob/main/examples/demo_template.robot).
153
+
154
+ ## Testes
155
+
156
+ ```bash
157
+ pytest
158
+ ```
159
+
160
+ Os testes usam mocks de `generate_content`; não há chamadas reais à API.
161
+
162
+ ## Licença
163
+
164
+ MIT.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "robotframework-gemini"
7
- version = "0.3.0"
7
+ version = "0.3.2"
8
8
  description = "Google Gemini oracles for Robot Framework: text-only and multimodal (image) assertions."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -47,14 +47,24 @@ dev = [
47
47
  ]
48
48
 
49
49
  [project.entry-points."robotframework.libraries"]
50
- GeminiLibrary = "robotframework_gemini.library:GeminiLibrary"
50
+ GeminiLibrary = "GeminiLibrary:GeminiLibrary"
51
+ BrowserGeminiLibrary = "BrowserGeminiLibrary:BrowserGeminiLibrary"
51
52
 
52
53
  [tool.hatch.build.targets.wheel]
53
54
  packages = ["src/robotframework_gemini"]
54
55
 
56
+ [tool.hatch.build.targets.wheel.force-include]
57
+ "src/GeminiLibrary.py" = "GeminiLibrary.py"
58
+ "src/BrowserGeminiLibrary.py" = "BrowserGeminiLibrary.py"
59
+
60
+ [tool.hatch.build.targets.editable]
61
+ dev-mode-dirs = ["src"]
62
+
55
63
  [tool.hatch.build.targets.sdist]
56
64
  include = [
57
65
  "src/robotframework_gemini",
66
+ "src/GeminiLibrary.py",
67
+ "src/BrowserGeminiLibrary.py",
58
68
  "LICENSE",
59
69
  "README.md",
60
70
  ]
@@ -0,0 +1,10 @@
1
+ """Backward-compatible shim for ``Library BrowserGeminiLibrary``."""
2
+
3
+ from robotframework_gemini.library import GeminiLibrary
4
+
5
+
6
+ class BrowserGeminiLibrary(GeminiLibrary):
7
+ """Alias of :class:`robotframework_gemini.library.GeminiLibrary`."""
8
+
9
+
10
+ __all__ = ["BrowserGeminiLibrary"]
@@ -0,0 +1,9 @@
1
+ """Top-level shim so ``Library GeminiLibrary`` resolves via ``import GeminiLibrary``.
2
+
3
+ Robot Framework entry points work at runtime; RobotCode and other tools often
4
+ import the library name as a Python module first.
5
+ """
6
+
7
+ from robotframework_gemini.library import GeminiLibrary
8
+
9
+ __all__ = ["GeminiLibrary"]
@@ -18,4 +18,4 @@ __all__ = [
18
18
  "__version__",
19
19
  ]
20
20
 
21
- __version__ = "0.3.0"
21
+ __version__ = "0.3.2"
@@ -33,7 +33,7 @@ class GeminiOrchestrator:
33
33
 
34
34
  Environment:
35
35
  - GEMINI_API_KEY for the API key (unless ``api_key`` is passed explicitly)
36
- - GEMINI_MODEL for model id (e.g. gemini-2.0-flash); defaults to gemini-2.0-flash
36
+ - GEMINI_MODEL for model id (e.g. gemini-2.5-flash); defaults to gemini-2.5-flash
37
37
  """
38
38
 
39
39
  def __init__(
@@ -47,7 +47,7 @@ class GeminiOrchestrator:
47
47
  raise ValueError(
48
48
  "Missing API key: set GEMINI_API_KEY (or pass api_key=...)"
49
49
  )
50
- self.model = model or os.environ.get("GEMINI_MODEL") or "gemini-2.0-flash"
50
+ self.model = model or os.environ.get("GEMINI_MODEL") or "gemini-2.5-flash"
51
51
  self._client = genai.Client(api_key=key)
52
52
 
53
53
  def generate_from_text(self, prompt: str) -> str:
@@ -33,7 +33,12 @@ ensure_gemini_env_from_legacy()
33
33
 
34
34
 
35
35
  class GeminiLibrary:
36
- """Keywords for Gemini text oracles and optional Browser screenshot capture."""
36
+ """Keywords for Gemini text oracles and optional Browser screenshot capture.
37
+
38
+ Import arguments:
39
+ - ``api_key`` — Gemini API key (falls back to ``GEMINI_API_KEY`` when omitted)
40
+ - ``model`` — model id (falls back to ``GEMINI_MODEL``, then ``gemini-2.5-flash``)
41
+ """
37
42
 
38
43
  ROBOT_LIBRARY_SCOPE = "GLOBAL"
39
44
 
@@ -1,144 +0,0 @@
1
- # robotframework-gemini
2
-
3
- Biblioteca **Python** e **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**).
4
-
5
- - **Multimodal**: envia o texto do prompt e a captura como `Part` em bytes (`google-genai`).
6
- - **Fluxo recomendado**: duas entradas — **contexto** (enquadramento do teste) e **avaliação** (critério ou pergunta objetiva).
7
- - **Browser opcional**: keywords de screenshot exigem `Library Browser`; keywords de texto funcionam sem navegador.
8
-
9
- ## Instalação
10
-
11
- ```bash
12
- pip install robotframework-gemini
13
- ```
14
-
15
- Com suporte a captura via Robot Framework Browser (Playwright):
16
-
17
- ```bash
18
- pip install "robotframework-gemini[browser]"
19
- python -m pip install robotframework
20
- ```
21
-
22
- Desenvolvimento local:
23
-
24
- ```bash
25
- python -m pip install -e ".[dev]"
26
- ```
27
-
28
- ## Variáveis de ambiente
29
-
30
- | Variável | Função |
31
- |-------------------|---------------------------------------------|
32
- | `GEMINI_API_KEY` | Chave da API Gemini (obrigatória se não passar `api_key` na Library) |
33
- | `GEMINI_MODEL` | Modelo (ex.: `gemini-2.0-flash`). Se omitido, usa `gemini-2.0-flash`. |
34
-
35
- ## Uso em Python (`GeminiOrchestrator`)
36
-
37
- ```python
38
- from pathlib import Path
39
- from robotframework_gemini import GeminiOrchestrator
40
-
41
- orchestrator = GeminiOrchestrator()
42
- context = "Web dashboard with the 'Active' category filter applied."
43
- evaluation = "Do the visible list items match the selected category?"
44
- model_response = orchestrator.evaluate_with_image(context, evaluation, Path("screen.png"))
45
- ```
46
-
47
- Para formato de saída restrito (ex.: Yes/No), use `extra_instructions`:
48
-
49
- ```python
50
- model_response = orchestrator.evaluate_with_text(
51
- context,
52
- evaluation,
53
- extra_instructions="Reply with one word only: Yes or No.",
54
- )
55
- ```
56
-
57
- ## Uso no Robot Framework
58
-
59
- > **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.
60
-
61
- ### Só texto (sem Browser)
62
-
63
- ```robot
64
- *** Settings ***
65
- Library GeminiLibrary
66
-
67
- *** Keywords ***
68
- Validar resposta da API
69
- ${context}= Set Variable {"status": "ok", "items": 3}
70
- ${evaluation}= Set Variable O payload indica sucesso com itens?
71
- ${model_response}= Gemini Evaluate Text ${context} ${evaluation}
72
- Log ${model_response}
73
- ```
74
-
75
- ### Com captura de tela (Browser)
76
-
77
- Declare a biblioteca **Browser** antes de **Gemini**:
78
-
79
- ```robot
80
- *** Settings ***
81
- Library Browser
82
- Library GeminiLibrary
83
-
84
- *** Keywords ***
85
- Checar tela por critério neutro
86
- ${context}= Set Variable Lista filtrada por status Ativo.
87
- ${evaluation}= Set Variable Todos os itens visíveis mostram status Ativo?
88
- ${model_response}= Gemini Evaluate With Screen ${context} ${evaluation}
89
- Log ${model_response}
90
- ```
91
-
92
- Import explícito (equivalente):
93
-
94
- ```robot
95
- Library robotframework_gemini.library.GeminiLibrary
96
- ```
97
-
98
- Com arquivo já salvo:
99
-
100
- ```robot
101
- Browser.Take Screenshot ${OUTPUT_DIR}/tela.png
102
- ${model_response}= Gemini Evaluate With Image File ${context} ${evaluation} ${OUTPUT_DIR}/tela.png
103
- ```
104
-
105
- Veredito via prompt (primeira linha) e nota 1–5:
106
-
107
- ```robot
108
- ${model_response}= Gemini Evaluate With Screen ${context} ${evaluation}
109
- ... extra_instructions=Responda com uma palavra na primeira linha: Sim ou Não.
110
- ${verdict}= Get Line ${model_response} 0
111
- Should Be Equal As Strings ${verdict} Sim
112
-
113
- # Nota 1–5: duas etapas (log da justificativa) ou atalho em uma linha
114
- ${model_response}= Gemini Evaluate Text Rating ${context} ${evaluation}
115
- ${rating_score}= Gemini Parse Rating ${model_response}
116
-
117
- ${rating_score}= Gemini Evaluate Text Rating Score ${context} ${evaluation}
118
- ```
119
-
120
- Detalhes das três keywords de nota: [`docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar`](docs/KEYWORDS.pt-BR.md#notas-15-três-keywords-quando-usar).
121
-
122
- Consulte também [`examples/demo_template.robot`](examples/demo_template.robot).
123
-
124
- ## Documentação de Keywords
125
-
126
- - Português: [`docs/KEYWORDS.pt-BR.md`](docs/KEYWORDS.pt-BR.md)
127
- - English: [`docs/KEYWORDS.en.md`](docs/KEYWORDS.en.md)
128
-
129
- ## Compatibilidade
130
-
131
- - `BrowserGeminiLibrary` permanece como alias de `GeminiLibrary` para suítes existentes.
132
- - Variáveis legadas (`LLM_API_KEY`, `LLM_API_KEY_LIA`, `LLM_LIA_MODEL`) são mapeadas para `GEMINI_*` ao importar o pacote.
133
-
134
- ## Testes
135
-
136
- ```bash
137
- pytest
138
- ```
139
-
140
- Os testes usam mocks de `generate_content`; não há chamadas reais à API.
141
-
142
- ## Licença
143
-
144
- MIT.