API de Responses

Los modelos de socios de OpenAI en Gemini Enterprise Agent Platform admiten la API de OpenAI Responses (publishers/openai/v1/responses) para la generación de texto a partir de entradas de texto e imagen, llamadas a herramientas, control del esfuerzo de razonamiento y compactación de conversaciones.

Antes de comenzar

Para usar los modelos de socios de OpenAI con Gemini Enterprise Agent Platform, debes completar los siguientes pasos. La API de Gemini Enterprise Agent Platform (aiplatform.googleapis.com) debe estar habilitada en tu proyecto de Google Cloud .

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. Completa los pasos de incorporación en Modelos de GPT de OpenAI, lo que incluye comprar el producto a través de Google Cloud Marketplace y habilitar el modelo en Model Garden.

  9. Si la política de tu organización restringe el acceso al modelo, permite el modelo en esa política.

Roles obligatorios

Para obtener los permisos que necesitas para llamar a los modelos de socios de OpenAI, pídele a tu administrador que te otorgue el rol de IAM de Usuario de Agent Platform (roles/aiplatform.user) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Extremos

Los modelos de socios de OpenAI se entregan desde las siguientes URLs base de Agent Platform:

  • Extremo global (global): https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/openai/v1
  • Extremo multirregional de EE.UU. (us): https://aiplatform.us.rep.googleapis.com/v1/projects/PROJECT_ID/locations/us/publishers/openai/v1

Reemplaza <var>PROJECT_ID</var> por el ID del proyecto de Google Cloud .

Llama a la API de Responses con el SDK de OpenAI para Python

Puedes usar la biblioteca oficial de Python de openai configurando base_url como tu extremo de Agent Platform y pasando un token de acceso de Google Cloud OAuth 2.0 actualizado como api_key. Establece store=False para las solicitudes sin estado y las cargas de trabajo de ZDR.

import google.auth
from google.auth.transport.requests import Request
from openai import OpenAI

credentials, _ = google.auth.default(
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
credentials.refresh(Request())

project_id = "PROJECT_ID"
base_url = (
    f"https://aiplatform.googleapis.com/v1/projects/{project_id}"
    "/locations/global/publishers/openai/v1"
)

client = OpenAI(
    base_url=base_url,
    api_key=credentials.token,
)

response = client.responses.create(
    model="gpt-6.1-sol",
    input="Explain how Zero Data Retention works on Agent Platform.",
    reasoning={"effort": "medium"},
    store=False,
)
print(response.output_text)

Mostrar respuestas en tiempo real

Para transmitir diferencias de texto incrementales en eventos enviados por el servidor (SSE), configura stream=True:

import google.auth
from google.auth.transport.requests import Request
from openai import OpenAI

credentials, _ = google.auth.default(
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
credentials.refresh(Request())

project_id = "PROJECT_ID"
base_url = (
    f"https://aiplatform.googleapis.com/v1/projects/{project_id}"
    "/locations/global/publishers/openai/v1"
)

client = OpenAI(
    base_url=base_url,
    api_key=credentials.token,
)

stream = client.responses.create(
    model="gpt-6-luna",
    input="Write a short Python function to validate a JSON schema.",
    stream=True,
    store=False,
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="")

Historial de conversaciones compacto

Para las sesiones de agentes de largo horizonte, llama al extremo de compactación independiente (POST .../responses/compact) para comprimir los mensajes anteriores en un elemento de compactación encriptado que se pueda pasar a las llamadas sin estado posteriores de /responses:

import google.auth
from google.auth.transport.requests import Request
from openai import OpenAI

credentials, _ = google.auth.default(
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
credentials.refresh(Request())

project_id = "PROJECT_ID"
base_url = (
    f"https://aiplatform.googleapis.com/v1/projects/{project_id}"
    "/locations/global/publishers/openai/v1"
)

client = OpenAI(
    base_url=base_url,
    api_key=credentials.token,
)

compacted = client.responses.compact(
    model="gpt-6-astra",
    input=[
        {"role": "user", "content": "Audit our multi-region VPC firewall rules."},
        {"role": "assistant", "content": "I checked the ingress rules for us-east1 and us-central1."},
    ],
)
print(compacted.output)

Llama a la API de Responses con el SDK de OpenAI para Node.js

Puedes usar la biblioteca oficial de Node.js de openai con credenciales de OAuth de Google Cloud :

import OpenAI from "openai";

const projectId = "PROJECT_ID";
const client = new OpenAI({
  apiKey: process.env.GOOGLE_CLOUD_ACCESS_TOKEN,
  baseURL: `https://aiplatform.googleapis.com/v1/projects/${projectId}/locations/global/publishers/openai/v1`,
});

const response = await client.responses.create({
  model: "gpt-6-luna",
  input: "Write a short summary of how authentication works on Agent Platform.",
  store: false,
});
console.log(response.output_text);

Llama a la API de Responses con el SDK de OpenAI para Go

Puedes usar la biblioteca oficial de openai-go con las credenciales de OAuth de Google Cloud :

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/option"
    "github.com/openai/openai-go/v3/responses"
)

func main() {
    ctx := context.Background()
    projectID := "PROJECT_ID"
    client := openai.NewClient(
        option.WithAPIKey(os.Getenv("GOOGLE_CLOUD_ACCESS_TOKEN")),
        option.WithBaseURL("https://aiplatform.googleapis.com/v1/projects/"+projectID+"/locations/global/publishers/openai/v1"),
    )

    response, err := client.Responses.New(ctx, responses.ResponseNewParams{
        Model: "gpt-6-luna",
        Input: responses.ResponseNewParamsInputUnion{
            OfString: openai.String("Write a one-sentence bedtime story about a unicorn."),
        },
        Store: openai.Bool(false),
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(response.OutputText())
}

Llama a la API de Responses con curl

Puedes enviar una solicitud de REST directamente a la API de Responses con curl.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .

Método HTTP y URL:

POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/openai/v1/responses

Cuerpo JSON de la solicitud:

{
  "model": "gpt-6.1-sol",
  "input": "Summarize the key differences between Google Cloud and OpenAI terms.",
  "reasoning": {"effort": "medium"},
  "store": false
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Manejo de errores

Compila una retirada exponencial con Jitter en las respuestas 429 y 5xx en las cargas de trabajo de producción.

Código de estado Causa probable Acción recomendada
401 El token de acceso venció o no es válido. Actualiza tu token de acceso de Google Cloud y vuelve a intentar la solicitud.
403 La identidad del emisor no tiene los permisos necesarios, o bien la API, el proyecto o el modelo no están habilitados. Verifica los roles de IAM, la habilitación de la API, la lista de entidades permitidas del proyecto y la habilitación de Model Garden.
404 La ruta del extremo, la ubicación o el identificador del modelo son incorrectos. Verifica la URL base, el segmento de ubicación y el nombre del modelo.
429 Se alcanzó el límite de frecuencia, cuota o capacidad disponible. Retírate de forma exponencial y vuelve a intentarlo. Comunícate con tu equipo de cuentas si el problema persiste.
5xx Condición transitoria del servidor. Vuelve a intentarlo con una retirada exponencial.

Conecta Codex a Google Cloud

Puedes configurar OpenAI Codex (app para computadoras o CLI) para enrutar las solicitudes del modelo a través de tu proyecto de Google Cloud con la autenticación de Google Cloud . Para obtener instrucciones de configuración completas, pasos de acceso interactivos y opciones manuales de config.toml, consulta Conecta OpenAI Codex a Google Cloud.

¿Qué sigue?