# gcp_vertex_ai_chat

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [connect-full.txt](https://docs.redpanda.com/connect-full.txt)

---
title: gcp_vertex_ai_chat
latest-connect-version: 4.93.0
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-redpanda-tag: v26.1.9
docname: processors/gcp_vertex_ai_chat
page-component-name: connect
page-version: master
page-component-version: master
page-component-title: Connect
page-relative-src-path: processors/gcp_vertex_ai_chat.adoc
page-edit-url: https://github.com/redpanda-data/rp-connect-docs/edit/main/modules/components/pages/processors/gcp_vertex_ai_chat.adoc
page-git-created-date: "2024-09-04"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/connect/components/processors/gcp_vertex_ai_chat.md -->

**Available in:** [Cloud](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/processors/gcp_vertex_ai_chat/%20%22View%20the%20Cloud%20version%20of%20this%20component%22), Self-Managed

Generates responses to messages in a chat conversation, using the [Vertex API AI](https://cloud.google.com/vertex-ai/docs/start/introduction-unified-platform).

Introduced in version 4.34.0.

#### Common

```yml
processors:
  label: ""
  gcp_vertex_ai_chat:
    project: "" # No default (required)
    credentials_json: "" # No default (optional)
    location: "" # No default (required)
    model: "" # No default (required)
    prompt: "" # No default (optional)
    history: "" # No default (optional)
    attachment: "" # No default (optional)
    temperature: "" # No default (optional)
    max_tokens: "" # No default (optional)
    response_format: text
    tools: []
```

#### Advanced

```yml
processors:
  label: ""
  gcp_vertex_ai_chat:
    project: "" # No default (required)
    credentials_json: "" # No default (optional)
    location: "" # No default (required)
    model: "" # No default (required)
    prompt: "" # No default (optional)
    system_prompt: "" # No default (optional)
    history: "" # No default (optional)
    attachment: "" # No default (optional)
    temperature: "" # No default (optional)
    max_tokens: "" # No default (optional)
    response_format: text
    top_p: "" # No default (optional)
    top_k: "" # No default (optional)
    stop: [] # No default (optional)
    presence_penalty: "" # No default (optional)
    frequency_penalty: "" # No default (optional)
    max_tool_calls: 10
    tools: []
```

This processor sends prompts to your chosen large language model (LLM) and generates text from the responses, using the Vertex AI API.

For more information, see the [Vertex AI documentation](https://cloud.google.com/vertex-ai/docs).

## [](#fields)Fields

### [](#attachment)`attachment`

Additional data like an image to send with the prompt to the model. The result of the mapping must be a byte array, and the content type is automatically detected.

Requires version 4.38.0 or later.

**Type**: `string`

```yaml
# Examples:
attachment: root = this.image.decode("base64") # decode base64 encoded image
```

### [](#credentials_json)`credentials_json`

An optional field to set a Google Service Account Credentials JSON.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Secrets](https://docs.redpanda.com/connect/configuration/secrets/).

**Type**: `string`

### [](#frequency_penalty)`frequency_penalty`

Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim.

**Type**: `float`

### [](#history)`history`

Historical messages to include in the chat request. The result of the bloblang query should be an array of objects of the form of \[{"role": "", "content":""}\], where role is "user" or "model".

**Type**: `string`

### [](#location)`location`

Specify the location of a fine tuned model. For base models, you can omit this field.

**Type**: `string`

```yaml
# Examples:
location: us-central1
```

### [](#max_tokens)`max_tokens`

The maximum number of output tokens to generate per message.

**Type**: `int`

### [](#max_tool_calls)`max_tool_calls`

The maximum number of sequential tool calls.

**Type**: `int`

**Default**: `10`

### [](#model)`model`

The name of the LLM to use. For a full list of models, see the [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden).

**Type**: `string`

```yaml
# Examples:
model: gemini-1.5-pro-001

# ---

model: gemini-1.5-flash-001
```

### [](#presence_penalty)`presence_penalty`

Positive values penalize new tokens if they appear in the text already, increasing the model’s likelihood to include new topics.

**Type**: `float`

### [](#project)`project`

The GCP project ID to use.

**Type**: `string`

### [](#prompt)`prompt`

The prompt you want to generate a response for. By default, the processor submits the entire payload as a string. This field supports [interpolation functions](https://docs.redpanda.com/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

### [](#response_format)`response_format`

The format of the generated response. You must also prompt the model to output the appropriate response type.

**Type**: `string`

**Default**: `text`

**Options**: `text`, `json`

### [](#stop)`stop[]`

Sets the stop sequences to use. When this pattern is encountered the LLM stops generating text and returns the final response.

**Type**: `array`

### [](#system_prompt)`system_prompt`

The system prompt to submit to the Vertex AI LLM. This field supports [interpolation functions](https://docs.redpanda.com/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

### [](#temperature)`temperature`

Controls the randomness of predictions.

**Type**: `float`

### [](#tools)`tools[]`

The tools to allow the LLM to invoke. This allows building subpipelines that the LLM can choose to invoke to execute agentic-like actions.

**Type**: `object`

**Default**: `[]`

### [](#tools-description)`tools[].description`

A description of this tool, the LLM uses this to decide if the tool should be used.

**Type**: `string`

### [](#tools-name)`tools[].name`

The name of this tool.

**Type**: `string`

### [](#tools-parameters)`tools[].parameters`

The parameters the LLM needs to provide to invoke this tool.

**Type**: `object`

### [](#tools-parameters-properties)`tools[].parameters.properties`

The properties for the processor’s input data

**Type**: `object`

### [](#tools-parameters-properties-description)`tools[].parameters.properties.description`

A description of this parameter.

**Type**: `string`

### [](#tools-parameters-properties-enum)`tools[].parameters.properties.enum[]`

Specifies that this parameter is an enum and only these specific values should be used.

**Type**: `array`

**Default**: `[]`

### [](#tools-parameters-properties-type)`tools[].parameters.properties.type`

The type of this parameter.

**Type**: `string`

### [](#tools-parameters-required)`tools[].parameters.required[]`

The required parameters for this pipeline.

**Type**: `array`

**Default**: `[]`

### [](#tools-processors)`tools[].processors[]`

The pipeline to execute when the LLM uses this tool.

**Type**: `processor`

### [](#top_k)`top_k`

Enables top-k sampling (optional).

**Type**: `float`

### [](#top_p)`top_p`

Enables nucleus sampling (optional).

**Type**: `float`