> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pipecat.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google RTVI Observer

> Adding support for sending search responses to RTVI clients

## Overview

The `GoogleRTVIObserver` extends the [base `RTVIObserver` type](./rtvi-observer), to add support for the `bot-llm-search-response` message type and providing clients with the search results from the `GoogleLLMService`. See [this section on Search Grounding](/api-reference/server/services/llm/google#search-grounding) for more details.

<CardGroup cols={3}>
  <Card title="API Reference" icon="code" href="https://reference-server.pipecat.ai/en/latest/api/pipecat.services.google.rtvi.html">
    Complete API documentation and method details
  </Card>

  <Card title="Gemini Docs" icon="book" href="https://ai.google.dev/gemini-api/docs/google-search">
    Official Google Gemini API documentation and features
  </Card>

  <Card title="Example Code" icon="play" href="https://github.com/pipecat-ai/pipecat-examples/tree/main/news-chatbot">
    Working example using Google's search grounding to ask about current events
  </Card>
</CardGroup>

## Installation

To use `GoogleRTVIObserver`, install the required dependencies:

```bash theme={null}
uv add "pipecat-ai[google]"
```

You'll also need to follow setup instructions for the [Google LLM Service](/api-reference/server/services/llm/google#installation) to ensure the `GoogleLLMService` is properly configured.

## Frame Translation

The observer maps the `LLMSearchResponseFrame` to the `RTVIBotLLMSearchResponseMessage`. Check out the [RTVI Standard Reference](/client/rtvi-standard#bot-llm-search-response-🤖) for details on the message format.

## Usage Example

To use `GoogleRTVIObserver`, pass a `GoogleRTVIProcessor` to your `PipelineTask`. This automatically creates and attaches the Google-specific observer:

```python theme={null}
from pipecat.services.google.rtvi import GoogleRTVIProcessor

pipeline = Pipeline([
    transport.input(),
    stt,
    # Other processors...
])

task = PipelineTask(
    pipeline,
    rtvi_processor=GoogleRTVIProcessor(),
)
```
