0d3cb498a3
CI / Shell Format Check (push) Has been cancelled
CI / Check Ruby (3.4) (push) Has been cancelled
CI / CI Config (push) Has been cancelled
CI / Test on Node ${{ matrix.node }} and ${{ matrix.os }}${{ matrix.shard && format(' (shard {0}/3)', matrix.shard) || '' }} (push) Has been cancelled
CI / Build on Node ${{ matrix.node }} (push) Has been cancelled
CI / Style Check (push) Has been cancelled
CI / Generate Assets (push) Has been cancelled
CI / Check Python (3.14) (push) Has been cancelled
CI / Check Python (3.9) (push) Has been cancelled
CI / Build Docs (push) Has been cancelled
CI / Code Scan Action (push) Has been cancelled
CI / Site tests (push) Has been cancelled
CI / webui tests (push) Has been cancelled
CI / Run Integration Tests (push) Has been cancelled
CI / Run Smoke Tests (push) Has been cancelled
CI / Go Tests (push) Has been cancelled
CI / Share Test (push) Has been cancelled
CI / Redteam (Production API) (push) Has been cancelled
CI / Redteam (Staging API) (push) Has been cancelled
CI / GitHub Actions Lint (push) Has been cancelled
CI / Check Ruby (3.0) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
release-please / build (push) Has been cancelled
release-please / publish-npm (push) Has been cancelled
release-please / publish-npm-backfill (push) Has been cancelled
release-please / docker (push) Has been cancelled
release-please / publish-code-scan-action (push) Has been cancelled
release-please / attest-code-scan-action (push) Has been cancelled
Deploy local.promptfoo.app / Deploy to Cloudflare Pages (push) Has been cancelled
Test and Publish Multi-arch Docker Image / test (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-amd64 platform:linux/amd64 runner:ubuntu-latest]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-arm64 platform:linux/arm64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / merge-docker-digests (push) Has been cancelled
Test and Publish Multi-arch Docker Image / Attest Multi-arch Image (push) Has been cancelled
Validate Renovate Config / Validate Renovate Configuration (push) Has been cancelled
129 lines
3.7 KiB
Markdown
129 lines
3.7 KiB
Markdown
# google-aistudio-tools (Google AI Studio Tools)
|
|
|
|
This example demonstrates how to use Google AI Studio's function calling, search capabilities, code execution, and URL context features with promptfoo.
|
|
|
|
You can run this example with:
|
|
|
|
```bash
|
|
npx promptfoo@latest init --example google-aistudio-tools
|
|
cd google-aistudio-tools
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
- Google AI Studio API key set as `GOOGLE_API_KEY` in your environment
|
|
|
|
## Overview
|
|
|
|
This example shows how to:
|
|
|
|
1. **Function Calling**: Use Gemini to invoke predefined functions based on user queries
|
|
2. **Google Search Integration**: Get up-to-date information from the web using Gemini models with search grounding
|
|
3. **Code Execution**: Execute Python code to solve computational problems
|
|
4. **URL Context**: Extract and analyze content from web URLs
|
|
|
|
## Function Calling Example
|
|
|
|
The function calling configuration (`promptfooconfig.yaml`) demonstrates:
|
|
|
|
- Defining a weather function in `tools.json`
|
|
- Validating that Gemini models correctly produce structured function calls
|
|
- Testing that the location parameter matches the user's query
|
|
|
|
Run with:
|
|
|
|
```bash
|
|
promptfoo eval -c promptfooconfig.yaml
|
|
```
|
|
|
|
## Search Grounding Example
|
|
|
|
The search grounding configuration (`promptfooconfig.search.yaml`) demonstrates:
|
|
|
|
- Using Gemini 2.5 Flash with Google Search as a tool
|
|
- Using Gemini 2.5 Pro with thinking capabilities and Search grounding
|
|
- Using Gemini 2.5 Flash-Lite with Google Search grounding
|
|
- Testing queries that benefit from real-time web information
|
|
- Verifying responses include relevant information
|
|
|
|
Run with:
|
|
|
|
```bash
|
|
promptfoo eval -c promptfooconfig.search.yaml
|
|
```
|
|
|
|
## Code Execution Example
|
|
|
|
The code execution configuration (`promptfooconfig.codeexecution.yaml`) demonstrates:
|
|
|
|
- Testing computational problems that require code to solve
|
|
- Verifying that the answer is correct from the code execution
|
|
|
|
Run with:
|
|
|
|
```bash
|
|
promptfoo eval -c promptfooconfig.codeexecution.yaml
|
|
```
|
|
|
|
## URL Context Example
|
|
|
|
The URL context configuration (`promptfooconfig.urlcontext.yaml`) demonstrates:
|
|
|
|
- Using Gemini to extract and analyze content from web URLs
|
|
- Combining URL context with search capabilities
|
|
|
|
Run with:
|
|
|
|
```bash
|
|
promptfoo eval -c promptfooconfig.urlcontext.yaml
|
|
```
|
|
|
|
## Example Files
|
|
|
|
- `promptfooconfig.yaml`: Function calling configuration
|
|
- `promptfooconfig.search.yaml`: Search grounding configuration
|
|
- `promptfooconfig.codeexecution.yaml`: Code execution configuration
|
|
- `promptfooconfig.urlcontext.yaml`: URL context configuration
|
|
- `tools.json`: Function definition for the weather example
|
|
|
|
## Notes on Google Search Integration
|
|
|
|
When using Search grounding in your own applications:
|
|
|
|
- The API response includes search metadata and sources
|
|
- Google requires displaying "Google Search Suggestions" in user-facing apps
|
|
- Models can retrieve current information about events, prices, and technical updates
|
|
|
|
### Search Methods
|
|
|
|
This example demonstrates three approaches to search:
|
|
|
|
1. **Search as a tool** (Gemini 2.5): Allows the model to decide when to use search
|
|
|
|
```yaml
|
|
tools:
|
|
- googleSearch: {}
|
|
```
|
|
|
|
2. **Search with thinking** (Gemini 2.5): Adds thinking capabilities for better reasoning
|
|
|
|
```yaml
|
|
generationConfig:
|
|
thinkingConfig:
|
|
thinkingBudget: 1024
|
|
tools:
|
|
- googleSearch: {}
|
|
```
|
|
|
|
3. **Search on Flash-Lite** (Gemini 2.5): Uses the lower-cost Flash-Lite model with the same search tool
|
|
```yaml
|
|
tools:
|
|
- googleSearch: {}
|
|
```
|
|
|
|
## Further Resources
|
|
|
|
- [Google AI Studio Function Calling documentation](https://ai.google.dev/docs/function_calling)
|
|
- [Google AI Studio Search Grounding documentation](https://ai.google.dev/docs/gemini_api/grounding)
|
|
- [promptfoo Google Provider documentation](/docs/providers/google)
|