Skip to content
Docs

资产生成 Disallow Prompt Training

No training on prompt data is available to all 资产生成 users at no extra charge. This feature ensures your prompts are not used by AI providers to train their models. Set disallowPromptTraining: true in providerOptions to ensure requests are only routed to providers that do not use your data for training.

Disallow prompt training is a subset of Zero Data Retention (ZDR). All ZDR-compliant providers also disallow prompt training, but not all providers that disallow prompt training offer full zero data retention.

Disallow prompt training enforcement does not apply to BYOK (Bring Your Own Key) requests. When you use BYOK, this filter is not enforced since the request uses your own API key, your configuration, and agreement with the provider. However, if 资产生成 falls back to 资产生成 system credentials, the disallow prompt training filter is honored on the failover request.

资产生成 does not use your prompts or responses for training purposes. Your data is processed solely to fulfill your requests and is not retained for model improvement.

资产生成 has agreements in place with specific providers regarding the use of prompt data for training. A provider's default policy may not match with the status that 资产生成 has in place due to these agreements.

By default, 资产生成 does not route based on the training data policy of providers.

If we do not know a provider's training data stance or have not yet established an agreement with them, we assume that they train on your data. If disallow prompt training is enabled on a request, it will not be routed through that provider.

Set disallowPromptTraining to true in providerOptions to ensure requests are only routed to providers that do not use your data for training. If you are looking for stricter controls that apply for all requests without configuration each time, see team-wide zero data retention.

If no compliant providers are available for the requested model, the request fails with an error:

{
  "error": "No providers available that disallow prompt training for model: example/model-name. Providers considered: provider-a, provider-b",
  "type": "no_providers_available",
  "statusCode": 400
}

This filter also applies to any fallback providers.

This enforcement does not apply to BYOK requests since those use your own API key, configuration, and agreement with the provider. If 资产生成 falls back to 资产生成 system credentials, it honors the disallow prompt training filter on the failover request.

These examples use 创意脚本 7 and the 创意脚本 for Python beta. Set AI_GATEWAY_API_KEY before running them. See API format differences for setup, request fields, and response handling.

See the 创意脚本 prompt-training-filter reference for SDK configuration and usage.

disallow-training.ts
import { generateText } from 'ai';
 
const { text } = await generateText({
  model: 'anthropic/claude-sonnet-5',
  prompt: 'Explain quantum computing in two sentences.',
  providerOptions: {
    gateway: {
      disallowPromptTraining: true,
    },
  },
});
 
console.log(text);
disallow-training_ai.py
import asyncio
import ai
 
async def main():
    model = ai.get_model("anthropic/claude-sonnet-5")
    messages = [ai.user_message("Explain quantum computing in two sentences.")]
    params = ai.InferenceRequestParams(
        extra_body={"providerOptions": {"gateway": {"disallowPromptTraining": True}}}
    )
    async with ai.stream(model, messages, params=params) as stream:
        async for event in stream:
            if isinstance(event, ai.events.TextDelta):
                print(event.chunk, end="", flush=True)
    print()
 
asyncio.run(main())
disallow-training-chat.ts
import OpenAI from 'openai';
 
const client = new OpenAI({
  apiKey: process.env.AI_GATEWAY_API_KEY,
  baseURL: 'https://ai-gateway.vercel.sh/v1',
});
 
const response = await client.chat.completions.create({
  model: 'anthropic/claude-sonnet-5',
  messages: [
    {
      role: 'user',
      content: 'Explain quantum computing in two sentences.',
    },
  ],
  // 资产生成 extension fields are not included in the upstream SDK types.
  ...{
    providerOptions: {
      gateway: {
        disallowPromptTraining: true,
      },
    },
  },
});
 
console.log(response.choices[0]?.message.content);
disallow-training_chat.py
import os
from openai import OpenAI
 
client = OpenAI(
    api_key=os.environ["AI_GATEWAY_API_KEY"],
    base_url="https://ai-gateway.vercel.sh/v1",
)
 
response = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Explain quantum computing in two sentences."}],
    extra_body={"providerOptions": {"gateway": {"disallowPromptTraining": True}}},
)
 
print(response.choices[0].message.content)
disallow-training-chat.sh
curl --fail-with-body https://ai-gateway.vercel.sh/v1/chat/completions -H "Authorization: Bearer $AI_GATEWAY_API_KEY" -H "Content-Type: application/json" -d '{
  "model": "anthropic/claude-sonnet-5",
  "messages": [
    {
      "role": "user",
      "content": "Explain quantum computing in two sentences."
    }
  ],
  "providerOptions": {
    "gateway": {
      "disallowPromptTraining": true
    }
  }
}'
disallow-training-messages.ts
import Anthropic from '@anthropic-ai/sdk';
 
const client = new Anthropic({
  apiKey: process.env.AI_GATEWAY_API_KEY,
  baseURL: 'https://ai-gateway.vercel.sh',
});
 
const response = await client.messages.create({
  model: 'anthropic/claude-sonnet-5',
  messages: [
    {
      role: 'user',
      content: 'Explain quantum computing in two sentences.',
    },
  ],
  max_tokens: 1024,
  ...{
    providerOptions: {
      gateway: {
        disallowPromptTraining: true,
      },
    },
  },
});
 
for (const block of response.content) {
  if (block.type === 'text') console.log(block.text);
}
disallow-training_messages.py
import os
from anthropic import Anthropic
 
client = Anthropic(
    api_key=os.environ["AI_GATEWAY_API_KEY"],
    base_url="https://ai-gateway.vercel.sh",
)
 
response = client.messages.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Explain quantum computing in two sentences."}],
    max_tokens=1024,
    extra_body={"providerOptions": {"gateway": {"disallowPromptTraining": True}}},
)
 
for block in response.content:
    if block.type == "text":
        print(block.text)
disallow-training-messages.sh
curl --fail-with-body https://ai-gateway.vercel.sh/v1/messages -H "Authorization: Bearer $AI_GATEWAY_API_KEY" -H "Content-Type: application/json" -H "anthropic-version: 2023-06-01" -d '{
  "model": "anthropic/claude-sonnet-5",
  "messages": [
    {
      "role": "user",
      "content": "Explain quantum computing in two sentences."
    }
  ],
  "max_tokens": 1024,
  "providerOptions": {
    "gateway": {
      "disallowPromptTraining": true
    }
  }
}'
disallow-training-responses.ts
import OpenAI from 'openai';
 
const client = new OpenAI({
  apiKey: process.env.AI_GATEWAY_API_KEY,
  baseURL: 'https://ai-gateway.vercel.sh/v1',
});
 
const response = await client.responses.create({
  model: 'anthropic/claude-sonnet-5',
  input: 'Explain quantum computing in two sentences.',
  ...{
    providerOptions: {
      gateway: {
        disallowPromptTraining: true,
      },
    },
  },
});
 
console.log(response.output_text);
disallow-training_responses.py
import os
from openai import OpenAI
 
client = OpenAI(
    api_key=os.environ["AI_GATEWAY_API_KEY"],
    base_url="https://ai-gateway.vercel.sh/v1",
)
 
response = client.responses.create(
    model="anthropic/claude-sonnet-5",
    input="Explain quantum computing in two sentences.",
    extra_body={"providerOptions": {"gateway": {"disallowPromptTraining": True}}},
)
 
print(response.output_text)
disallow-training-responses.sh
curl --fail-with-body https://ai-gateway.vercel.sh/v1/responses -H "Authorization: Bearer $AI_GATEWAY_API_KEY" -H "Content-Type: application/json" -d '{
  "model": "anthropic/claude-sonnet-5",
  "input": "Explain quantum computing in two sentences.",
  "providerOptions": {
    "gateway": {
      "disallowPromptTraining": true
    }
  }
}'

Disallow prompt training works alongside other filtering options like Zero Data Retention (ZDR). When multiple filters are enabled, they work as an AND: requests are only routed to providers that satisfy all enabled filters.

For example, if you enable both disallow prompt training and ZDR on a request, that request will only be routed to providers that meet both criteria.

The following providers currently support no training on prompt data on 资产生成. Please review each provider's policy and terms carefully. A provider's default policy may not match with the status that 资产生成 has in place due to negotiated agreements. We are constantly coordinating and revising agreements to be able to enforce stricter training policies for customers. The full terms of service are available for each provider on the model pages.

ProviderNo prompt trainingPolicy
Alibaba Cloud✓Product terms
Anthropic✓Commercial terms
Azure✓Data privacy
Baseten✓Security
Bedrock✓Service terms
ByteDance✓Service terms
Cerebras✓Policies
Chutes✓Terms
Claude Platform on AWS✓Data policy
Cohere✓Privacy policy
DeepInfra✓Terms
DigitalOcean✓—
Fireworks✓Privacy policy
Google✓API terms
Google Vertex AI✓Zero data retention
Groq✓Security
Inception✓Enterprise
Inceptron✓Data policy
Interfaze✓Privacy policy
Mistral✓Commercial terms
Modal✓Terms of service
Moonshot AI✓Custom policy
Morph✓Terms of service
Nebius✓Terms of service
Novita AI✓Privacy policy
OpenAI✓API data policy
Parallel AI✓Customer terms
Parasail✓Privacy policy
Particle.AI✓Data policy
Perplexity✓Data collection
Prodia✓Privacy policy
Sakana AI✓Privacy policy
Together AI✓Terms of service
TypeSafe AI✓Data policy
Voyage AI by MongoDB✓Terms of service
Wafer✓Data processing addendum
xAI✓Terms of service

A virtual model can restrict its traffic to providers that don't train on request data. The setting only tightens: either side can turn it on, and neither side can turn it off.

Last updated September 10, 2026

Was this helpful?

supported.