chatgpt-api/docs/publishing/config/caching.mdx

95 wiersze
2.5 KiB
Markdown

---
title: Caching
description: Configure caching for your project's tools.
---
Opt-in to caching with familiar _cache-control_ and _stale-while-revalidate_ options. MCP tool calls include caching information in their _\_meta_ fields, providing parity with standard HTTP headers.
Agentic uses Cloudflare's global edge cache for caching, which guarantees unmatched global performance.
## Enabling Caching
You can enable caching for individual tools by setting [pure](/publishing/config/tool-config#param-pure) or [cacheControl](/publishing/config/tool-config#param-cache-control) on the tool's config. See [below](#examples) for examples.
## Cache Keys
Cache keys for tool calls are generated by normalizing the tool call's input, regardless of whether the tool call was made via `HTTP POST`, `HTTP GET`, or `MCP`.
Tool call args are hashed using a stable, deterministic JSON serialization algorithm, so tool calls with "identical" JSON inputs will have identical cache keys.
## Disabling Caching
Individual tool calls can disable caching by setting the standard `Cache-Control` header to `no-store` or `no-cache`.
<Note>
Note that by default, caching is disabled for all tools. You must explicitly
enable caching for each tool in your Agentic project config.
</Note>
## Examples
<Tabs>
<Tab title="Pure Tool">
```ts agentic.config.ts
import { defineConfig } from '@agentic/platform'
// In this example, `my-tool` is marked as pure which means its responses
// will be cached aggressively for identical requests using `cache-control`
// `public, max-age=31560000, s-maxage=31560000, stale-while-revalidate=3600`
export default defineConfig({
// ...
toolConfigs: [
{
name: 'my-tool',
pure: true
}
]
})
```
</Tab>
<Tab title="Custom Cache-Control">
```ts agentic.config.ts
import { defineConfig } from '@agentic/platform'
// In this example, `my-tool` is using a custom `Cache-Control` header to
// cache responses for 60 seconds.
export default defineConfig({
// ...
toolConfigs: [
{
name: 'my-tool',
cacheControl: 'public, max-age=60, s-maxage=60 stale-while-revalidate=10'
}
]
})
```
</Tab>
<Tab title="Disabling Caching">
```ts agentic.config.ts
import { defineConfig } from '@agentic/platform'
// In this example, `my-tool` results will never be cached.
// Note that this is the default behavior for all tools unless caching is
// explicitly enabled for a tool.
export default defineConfig({
// ...
toolConfigs: [
{
name: 'my-tool',
cacheControl: 'no-cache'
}
]
})
```
</Tab>
</Tabs>