Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
d9fa871
feat(test): add setup and basic test
fabianrbz May 28, 2026
007db60
refactor: the way we render md and html templates, read and compile the
fabianrbz May 29, 2026
5512a2f
add some basic specs with a fixture app
fabianrbz Jun 1, 2026
4d4ab8b
feat(tests): add specs for the table and feature_table blocks and ind…
fabianrbz Jun 1, 2026
c342722
fix specs
fabianrbz Jun 15, 2026
11a9d69
feat(ai-gateway): add generated pages for v1
fabianrbz Jun 15, 2026
025d2a0
feat(ai-gateway): add config files, update redirects and add url segment
fabianrbz Jun 15, 2026
5a6d8f0
fix: min_version, validate the format, it should be "major.minor"
fabianrbz Jun 15, 2026
4081025
feat: add major_version to frontmatter schemas
fabianrbz Jun 15, 2026
2ac1c56
add support for patches to min_version
fabianrbz Jun 15, 2026
6defe33
fix(insomnia): min_version in how-to
fabianrbz Jun 15, 2026
e0b607f
feat(ai-gateway): add major_release_calculator
fabianrbz Jun 15, 2026
fc089e3
remove(ai-gateway): unpublished how-to
fabianrbz Jun 15, 2026
866f942
feat(major-release): load the release config file for older major
fabianrbz Jun 15, 2026
4c47d8c
feat(major-release): set `canonical?: false` and `seo_noindex = true`
fabianrbz Jun 15, 2026
e5d05d0
feat(major-release): flag old major release pages as not being
fabianrbz Jun 15, 2026
83cfc08
fix(major-release): remove ! from ai-gateway redirects, it skips the
fabianrbz Jun 15, 2026
56e9cb7
feat(major-release): add old version banner to pages
fabianrbz Jun 16, 2026
05869cf
feat(major-release): add a safeguard to the sitemap generator to prevent
fabianrbz Jun 16, 2026
5dce685
feat(major-release): add specs
fabianrbz Jun 16, 2026
1de1ade
feat(major-release): set priority to high, we want this generator to run
fabianrbz Jun 16, 2026
362e22c
feat(major-release): filter releases, available_releases, etc by
fabianrbz Jun 16, 2026
8379702
fix(operator): remove old and unneeded page
fabianrbz Jun 16, 2026
7f3c77c
refactor: remove mesh generator and related classes, we no longer
fabianrbz Jun 16, 2026
89fd456
feat(major-release): fix auto-generated pages generation, we don't care
fabianrbz Jun 16, 2026
9289694
refactor(major-version): how product release info works
fabianrbz Jun 16, 2026
1acb79f
feat(major-release): refactor some specs and code and add support for
fabianrbz Jun 17, 2026
d4792dd
feat(major-release): add releases to ai-gateway
fabianrbz Jun 17, 2026
5ad7007
fix: use major.minor for min_version
fabianrbz Jun 17, 2026
14a358a
feat(major-release): add support for major_version to
fabianrbz Jun 17, 2026
f362201
fix(major-release): update old ai-gateway landing page to use a
fabianrbz Jun 17, 2026
aea4c35
feat(major-release): add placeholder prereq and cleanup for ai-gateway
fabianrbz Jun 17, 2026
f15ec6e
fat(major-release): remove ai-gateway how-tos, except the get-started
fabianrbz Jun 17, 2026
90714d6
feat(ai-gateway): add ai-gateway icon
fabianrbz Jun 17, 2026
d82e95e
feat(ai-gateway): add placeholder get started guide
fabianrbz Jun 17, 2026
7c726da
feat(major-release): add tests for drops/prereqs and refactor it to load
fabianrbz Jun 17, 2026
6f22654
refactor(major-release): prereqs - how product_entities work, and how…
fabianrbz Jun 17, 2026
4b7e195
feat(major-release): refactor ai-gateway product prereq
fabianrbz Jun 17, 2026
30b6081
refactor(major-release): the way we decide how to render gateway prereq
fabianrbz Jun 17, 2026
e9c33eb
refactor(major-release): the way we calculate products prereqs so that
fabianrbz Jun 17, 2026
03f5b94
fix(major-release): add missing redirects
fabianrbz Jun 18, 2026
4da604f
fix(ai-gateway): use full product name in prereq
fabianrbz Jun 18, 2026
325e9ca
fix: wrong new_in badges, they had a missing version
fabianrbz Jun 18, 2026
bf1923d
fix(major-release): only render version banner if page has a canonical
fabianrbz Jun 18, 2026
6d837b2
fix(major-release): use a regex when checking redirects and log a
fabianrbz Jun 18, 2026
cb0f55b
fix(major-release): this how to shouldn't be here, it's not an
fabianrbz Jun 18, 2026
93de7e5
fix(major-release): remove unneeded class
fabianrbz Jun 18, 2026
4bad2e1
feat(major-release): load entity_examples in prereqs based on the major
fabianrbz Jun 18, 2026
3fedad9
fix(ai-gateway): move metering-and-billing/meter-llm-traffic to the
fabianrbz Jun 18, 2026
4cfd7e0
feat(major-release): move mcp how-tos to /gateway/v1/
fabianrbz Jun 18, 2026
e33a78f
feat(major-release): add _landing_pages/ai-gateway/v1/mcp.yaml
fabianrbz Jun 18, 2026
84c3851
fix(major-release): expose the `products` available in the prereqs
fabianrbz Jun 18, 2026
d197aa1
fix: remove breadcrumbs from the how-to
fabianrbz Jun 18, 2026
9c25cc2
fix(major-release): the way how_to_list and reference_list calculate the
fabianrbz Jun 18, 2026
0a26af8
fix(major-release): remove how_to_list from ai pages
fabianrbz Jun 18, 2026
174f33a
fix(major-release): scope releases to latest - excluding unreleased
fabianrbz Jun 18, 2026
686b1d4
feat(major-release): always render the major version banner even if the
fabianrbz Jun 19, 2026
e1adfd7
fix(major-release): add comment explaining how app/_config/releases work
fabianrbz Jun 19, 2026
2ee55dc
fix(major-release): when loading major releases config
fabianrbz Jun 19, 2026
c6ff4c5
feat(ai-gateway): AI Gateway 2.0 entities (#5263)
tomek-labuk Jun 1, 2026
54170b9
update agent and mcp server entities
tomek-labuk Jun 3, 2026
fda5b4e
update mcp server
tomek-labuk Jun 3, 2026
c9d5d01
Remove on-prem mentions
tomek-labuk Jun 3, 2026
3c93165
feat(ai-gateway): Update load balancing capabilities documentation fo…
tomek-labuk Jun 11, 2026
42bb5d1
update min_version
tomek-labuk Jun 11, 2026
f7722fe
Update min_version for Resource sizing guidelines doc
tomek-labuk Jun 11, 2026
57fac3f
feat(ai-gateway): Align semantic similarity documentation with AI GW …
tomek-labuk Jun 16, 2026
57c9b79
fix(ai-gateway): remove uneeded cleanup step in ai-gateway-get-started
fabianrbz Jun 19, 2026
1f145b8
Add new getting started guide for 2.0
tomek-labuk Jun 19, 2026
751d66e
Add includes and appease vale
tomek-labuk Jun 19, 2026
05a5c4a
update file
tomek-labuk Jun 22, 2026
3bc5915
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 22, 2026
ea5a37a
delete unused how-to
tomek-labuk Jun 22, 2026
a1aa23c
Update prereqs
tomek-labuk Jun 22, 2026
106c499
add get started for mcp
tomek-labuk Jun 23, 2026
da813c6
appease vale
tomek-labuk Jun 23, 2026
dfd3ea3
fix
tomek-labuk Jun 23, 2026
512d23b
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 24, 2026
5f878a2
Delete cleanup include
tomek-labuk Jun 24, 2026
ed6afa9
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 24, 2026
c8199f2
Update getting started guides with working configs
tomek-labuk Jun 26, 2026
62a0725
Update the main get started guide
tomek-labuk Jun 29, 2026
bb5522d
Update Get started with MCP server guide
tomek-labuk Jun 29, 2026
b9d4c90
Delete MCP guide
tomek-labuk Jun 29, 2026
87270a3
Apply suggestions from code review
tomek-labuk Jun 29, 2026
e43d139
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 30, 2026
bf4ad81
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 30, 2026
0247506
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 30, 2026
20e49f9
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 30, 2026
9bcff50
Merge branch 'release/ai-gateway-2.0' into feat/ai-gw-2-0-get-started
tomek-labuk Jun 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 117 additions & 18 deletions app/_how-tos/ai-gateway/get-started-with-ai-gateway.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,146 @@
title: Get started with {{site.ai_gateway}}
content_type: how_to
permalink: /ai-gateway/get-started/
description: Learn how to quickly get started with {{site.ai_gateway}}
description: Learn how to proxy LLM traffic with {{site.ai_gateway}} entities in {{site.konnect_product_name}}
products:
- ai-gateway
- ai-gateway

works_on:
- konnect
- konnect

entities:
- ai-provider
- ai-model

tags:
- get-started
- ai
- openai
- get-started
- ai

tldr:
q: What is {{site.ai_gateway}}, and how can I get started with it?
q: How do I proxy LLM traffic with {{site.ai_gateway}} entities?
a: |
With {{site.ai_gateway}}, you can deploy AI infrastructure for traffic
that is sent to one or more LLMs.
{{site.ai_gateway}} provides first-class entities for managing LLM providers and models in {{site.konnect_product_name}}.
Create an [AI Provider](/ai-gateway/entities/ai-provider/) entity to connect and authenticate to an LLM service like OpenAI, then create an [AI
Model](/ai-gateway/entities/ai-model/) entity to specify which model is available for requests.

This tutorial shows you how to set up an AI Provider and AI Model for OpenAI in {{site.konnect_product_name}} using the {{site.konnect_short_name}} API and how to proxy your first request to OpenAI.

tools:
- deck
- konnect-api

prereqs:
inline:
- title: OpenAI
- title: OpenAI credentials
content: |
This tutorial uses the AI Proxy plugin with OpenAI. You'll need to [create an OpenAI account](https://auth.openai.com/create-account) and [get an API key](https://platform.openai.com/api-keys). Once you have your API key, create an environment variable:
This tutorial uses OpenAI as the LLM provider. You'll need to [create an OpenAI account](https://auth.openai.com/create-account)
and [get an API key](https://platform.openai.com/api-keys). Save your API key for the next steps:

```sh
export OPENAI_API_KEY='<api-key>'
```

cleanup:
inline:
- title: Destroy the {{site.ai_gateway}} container
- title: Clean up {{site.ai_gateway}} resources
include_content: cleanup/products/ai-gateway
icon_url: /assets/icons/ai-gateway.svg

min_version:
ai-gateway: '2.0'
ai-gateway: '2.0'

---

## Placeholder
## Create an AI Provider entity

Create an [AI Provider](/ai-gateway/entities/ai-provider/) entity to define your connection to OpenAI and store your authentication credentials:

<!-- vale off -->
{% konnect_api_request %}
url: /v1/ai-gateways/$AI_GATEWAY_ID/providers
status_code: 201
method: POST
headers:
- 'Content-Type: application/json'
- 'Accept: application/json, application/problem+json'
body:
type: openai
display_name: generic-openai
name: generic-openai
config:
auth:
type: basic
headers:
- name: Authorization
value: Bearer $OPENAI_API_KEY
{% endkonnect_api_request %}
<!-- vale on -->

In this example, we're setting up the AI Provider with:

* `type: openai`: Specifies that this provider connects to the OpenAI service using OpenAI's standard API format.
* `name: generic-openai`: A unique identifier that AI Models will reference to route requests through this provider.
* `config.auth`: Stores your OpenAI API key. {{site.ai_gateway}} securely manages this credential and injects it into upstream requests automatically, eliminating the need for clients to pass API keys.

## Create an AI Model entity

Create an [AI Model](/ai-gateway/entities/ai-model/) entity to declare which upstream models are available, configure how client requests are routed, and specify which AI Provider to use:

<!-- vale off -->
{% konnect_api_request %}
url: /v1/ai-gateways/$AI_GATEWAY_ID/models
status_code: 201
method: POST
headers:
- 'Content-Type: application/json'
- 'Accept: application/json, application/problem+json'
body:
display_name: my-gpt-4o
name: my-gpt-4o
type: model
formats:
- type: openai
config:
route:
Comment thread
tomek-labuk marked this conversation as resolved.
paths:
- /v1
model: {}
logging:
payloads: false
statistics: true
targets:
- name: gpt-4o
provider: generic-openai
config:
type: openai
policies: []
capabilities:
- generate
{% endkonnect_api_request %}
<!-- vale on -->

In this example, we're setting up the AI Model with:

* `type: model`: Specifies this is a synchronous model for request/response workloads.
* `name: my-gpt-4o`: A unique identifier for this model.
* `formats: [type: openai]`: Declares that this model accepts requests in OpenAI-compatible format.
* `config.route.paths: [/v1]`: Configures the custom base path where this model's Routes will be accessible. Clients will send requests to paths that combine this base path with capability-specific Routes.
* `capabilities: [generate]`: Enables the text generation capability. The `generate` capability creates a `/chat/completions` endpoint, so combined with your base path, clients send chat requests to `/v1/chat/completions`.
* `targets`: Specifies which upstream AI Provider model to route requests to. Here, `provider: generic-openai` references the AI Provider we created earlier, and `name: gpt-4o` specifies which OpenAI model to call upstream.
* `config.logging`: Configures what gets logged. With `statistics: true`, usage metrics (tokens, latency, cost) are logged for monitoring and billing. With `payloads: false`, full request/response bodies are not logged for privacy.

## Validate

Send a chat request to verify your setup:

lorem ipsum
<!-- vale off -->
{% validation request-check %}
url: /v1/chat/completions
status_code: 200
method: POST
headers:
- 'Accept: application/json'
- 'Content-Type: application/json'
body:
messages:
- role: "user"
content: "Say this is a test!"
{% endvalidation %}
Comment thread
tomek-labuk marked this conversation as resolved.
<!-- vale on -->
2 changes: 2 additions & 0 deletions app/_includes/cleanup/products/ai-gateway.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
To clean up all {{site.ai_gateway}} resources created in this guide, run:

```bash
curl -Ls https://get.konghq.com/quickstart/ai | bash -s -- -d
```
32 changes: 29 additions & 3 deletions app/_includes/prereqs/products/ai-gateway.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
{% assign summary='{{site.ai_gateway_name}} running' %}
{% assign summary='{{site.ai_gateway}} running' %}
{% capture details_content %}
Placeholder prereq

This is a {{site.konnect_short_name}} tutorial and requires a {{site.konnect_short_name}} personal access token.

1. Create a new personal access token by opening the [{{site.konnect_short_name}} PAT page](https://cloud.konghq.com/global/account/tokens) and selecting **Generate Token**.

1. Export your token to an environment variable:

```bash
export KONNECT_TOKEN='YOUR_KONNECT_PAT'
```

1. Run the {{site.ai_gateway}} [quickstart script](https://get.konghq.com/quickstart/ai) to automatically provision a control plane and data plane in {{site.konnect_product_name}}, and configure your environment:

```bash
curl -Ls https://get.konghq.com/quickstart/ai | bash -s -- -k $KONNECT_TOKEN
```

This sets up a {{site.ai_gateway}} control plane named `ai-quickstart`, provisions a local data plane, and prints out the following environment variables export:

```bash
curl -Ls https://get.konghq.com/quickstart/ai | bash -s -- -d
export AI_GATEWAY_ID=your-gateway-id
export DECK_KONNECT_TOKEN=$KONNECT_TOKEN
Comment thread
tomek-labuk marked this conversation as resolved.
export DECK_KONNECT_CONTROL_PLANE_NAME=quickstart
export KONNECT_CONTROL_PLANE_URL=https://us.api.konghq.com
export KONNECT_PROXY_URL='http://localhost:8000'
```

Copy and paste these into your terminal to configure your session.

{% endcapture %}

{% include how-tos/prereq_cleanup_item.html summary=summary details_content=details_content icon_url='/assets/icons/ai-gateway.svg' %}
Loading