mirror of
https://github.com/katanemo/plano.git
synced 2026-06-17 15:25:17 +02:00
Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
440ee1e1ef | ||
|
|
ecf864df25 | ||
|
|
2e38f7fa09 | ||
|
|
7906e5d455 |
14 changed files with 262 additions and 245 deletions
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
|
|
@ -117,7 +117,7 @@ jobs:
|
||||||
# repo means find_repo_root() returns None, the local-build short-
|
# repo means find_repo_root() returns None, the local-build short-
|
||||||
# circuit is skipped, and the CLI tries to download from a GitHub
|
# circuit is skipped, and the CLI tries to download from a GitHub
|
||||||
# release that does not yet exist for the in-flight version on
|
# release that does not yet exist for the in-flight version on
|
||||||
# release-bump PRs (e.g. 0.4.23 before publish-binaries has run).
|
# release-bump PRs (e.g. 0.4.25 before publish-binaries has run).
|
||||||
- name: Seed ~/.plano cache for zero-config test
|
- name: Seed ~/.plano cache for zero-config test
|
||||||
run: |
|
run: |
|
||||||
VERSION=$(sed -nE 's/^__version__ = "(.*)"$/\1/p' cli/planoai/__init__.py)
|
VERSION=$(sed -nE 's/^__version__ = "(.*)"$/\1/p' cli/planoai/__init__.py)
|
||||||
|
|
@ -183,13 +183,13 @@ jobs:
|
||||||
load: true
|
load: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ env.PLANO_DOCKER_IMAGE }}
|
${{ env.PLANO_DOCKER_IMAGE }}
|
||||||
${{ env.DOCKER_IMAGE }}:0.4.23
|
${{ env.DOCKER_IMAGE }}:0.4.25
|
||||||
${{ env.DOCKER_IMAGE }}:latest
|
${{ env.DOCKER_IMAGE }}:latest
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
- name: Save image as artifact
|
- name: Save image as artifact
|
||||||
run: docker save ${{ env.PLANO_DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}:0.4.23 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar
|
run: docker save ${{ env.PLANO_DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}:0.4.25 ${{ env.DOCKER_IMAGE }}:latest -o /tmp/plano-image.tar
|
||||||
|
|
||||||
- name: Upload image artifact
|
- name: Upload image artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v6
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ export function Hero() {
|
||||||
>
|
>
|
||||||
<div className="inline-flex flex-wrap items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-1 rounded-full bg-[rgba(185,191,255,0.4)] border border-[var(--secondary)] shadow backdrop-blur hover:bg-[rgba(185,191,255,0.6)] transition-colors cursor-pointer">
|
<div className="inline-flex flex-wrap items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-1 rounded-full bg-[rgba(185,191,255,0.4)] border border-[var(--secondary)] shadow backdrop-blur hover:bg-[rgba(185,191,255,0.6)] transition-colors cursor-pointer">
|
||||||
<span className="text-xs sm:text-sm font-medium text-black/65">
|
<span className="text-xs sm:text-sm font-medium text-black/65">
|
||||||
v0.4.23
|
v0.4.25
|
||||||
</span>
|
</span>
|
||||||
<span className="text-xs sm:text-sm font-medium text-black ">
|
<span className="text-xs sm:text-sm font-medium text-black ">
|
||||||
—
|
—
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
docker build -f Dockerfile . -t katanemo/plano -t katanemo/plano:0.4.23
|
docker build -f Dockerfile . -t katanemo/plano -t katanemo/plano:0.4.25
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
"""Plano CLI - Intelligent Prompt Gateway."""
|
"""Plano CLI - Intelligent Prompt Gateway."""
|
||||||
|
|
||||||
__version__ = "0.4.23"
|
__version__ = "0.4.25"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ PLANO_COLOR = "#969FF4"
|
||||||
|
|
||||||
SERVICE_NAME_ARCHGW = "plano"
|
SERVICE_NAME_ARCHGW = "plano"
|
||||||
PLANO_DOCKER_NAME = "plano"
|
PLANO_DOCKER_NAME = "plano"
|
||||||
PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.23")
|
PLANO_DOCKER_IMAGE = os.getenv("PLANO_DOCKER_IMAGE", "katanemo/plano:0.4.25")
|
||||||
DEFAULT_OTEL_TRACING_GRPC_ENDPOINT = "http://localhost:4317"
|
DEFAULT_OTEL_TRACING_GRPC_ENDPOINT = "http://localhost:4317"
|
||||||
|
|
||||||
# Native mode constants
|
# Native mode constants
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "planoai"
|
name = "planoai"
|
||||||
version = "0.4.23"
|
version = "0.4.25"
|
||||||
description = "Python-based CLI tool to manage Plano."
|
description = "Python-based CLI tool to manage Plano."
|
||||||
authors = [{name = "Katanemo Labs, Inc."}]
|
authors = [{name = "Katanemo Labs, Inc."}]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
|
||||||
2
cli/uv.lock
generated
2
cli/uv.lock
generated
|
|
@ -337,7 +337,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "planoai"
|
name = "planoai"
|
||||||
version = "0.4.23"
|
version = "0.4.25"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "click" },
|
{ name = "click" },
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@ pub struct MessagesRequest {
|
||||||
pub enum MessagesRole {
|
pub enum MessagesRole {
|
||||||
User,
|
User,
|
||||||
Assistant,
|
Assistant,
|
||||||
|
System,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Cache control types for content blocks
|
/// Cache control types for content blocks
|
||||||
|
|
@ -632,6 +633,7 @@ impl MessagesRole {
|
||||||
match self {
|
match self {
|
||||||
MessagesRole::User => "user",
|
MessagesRole::User => "user",
|
||||||
MessagesRole::Assistant => "assistant",
|
MessagesRole::Assistant => "assistant",
|
||||||
|
MessagesRole::System => "system",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,77 @@ providers:
|
||||||
- amazon/amazon.nova-premier-v1:0
|
- amazon/amazon.nova-premier-v1:0
|
||||||
- amazon/amazon.nova-lite-v1:0
|
- amazon/amazon.nova-lite-v1:0
|
||||||
- amazon/amazon.nova-micro-v1:0
|
- amazon/amazon.nova-micro-v1:0
|
||||||
|
anthropic:
|
||||||
|
- anthropic/claude-fable-5
|
||||||
|
- anthropic/claude-opus-4-8
|
||||||
|
- anthropic/claude-opus-4-7
|
||||||
|
- anthropic/claude-sonnet-4-6
|
||||||
|
- anthropic/claude-opus-4-6
|
||||||
|
- anthropic/claude-opus-4-5-20251101
|
||||||
|
- anthropic/claude-opus-4-5
|
||||||
|
- anthropic/claude-haiku-4-5-20251001
|
||||||
|
- anthropic/claude-haiku-4-5
|
||||||
|
- anthropic/claude-sonnet-4-5-20250929
|
||||||
|
- anthropic/claude-sonnet-4-5
|
||||||
|
- anthropic/claude-opus-4-1-20250805
|
||||||
|
- anthropic/claude-opus-4-1
|
||||||
|
- anthropic/claude-opus-4-20250514
|
||||||
|
- anthropic/claude-opus-4
|
||||||
|
- anthropic/claude-sonnet-4-20250514
|
||||||
|
- anthropic/claude-sonnet-4
|
||||||
|
chatgpt:
|
||||||
|
- chatgpt/gpt-5.4
|
||||||
|
- chatgpt/gpt-5.3-codex
|
||||||
|
- chatgpt/gpt-5.2
|
||||||
|
deepseek:
|
||||||
|
- deepseek/deepseek-v4-flash
|
||||||
|
- deepseek/deepseek-v4-pro
|
||||||
|
digitalocean:
|
||||||
|
- digitalocean/openai-gpt-4.1
|
||||||
|
- digitalocean/openai-gpt-4o
|
||||||
|
- digitalocean/openai-gpt-4o-mini
|
||||||
|
- digitalocean/openai-gpt-5
|
||||||
|
- digitalocean/openai-gpt-5-mini
|
||||||
|
- digitalocean/openai-gpt-5-nano
|
||||||
|
- digitalocean/openai-gpt-5.1-codex-max
|
||||||
|
- digitalocean/openai-gpt-5.2
|
||||||
|
- digitalocean/openai-gpt-5.2-pro
|
||||||
|
- digitalocean/openai-gpt-5.3-codex
|
||||||
|
- digitalocean/openai-gpt-5.4
|
||||||
|
- digitalocean/openai-gpt-5.4-mini
|
||||||
|
- digitalocean/openai-gpt-5.4-nano
|
||||||
|
- digitalocean/openai-gpt-5.4-pro
|
||||||
|
- digitalocean/openai-gpt-oss-120b
|
||||||
|
- digitalocean/openai-gpt-oss-20b
|
||||||
|
- digitalocean/openai-o1
|
||||||
|
- digitalocean/openai-o3
|
||||||
|
- digitalocean/openai-o3-mini
|
||||||
|
- digitalocean/anthropic-claude-4.1-opus
|
||||||
|
- digitalocean/anthropic-claude-4.5-sonnet
|
||||||
|
- digitalocean/anthropic-claude-4.6-sonnet
|
||||||
|
- digitalocean/anthropic-claude-haiku-4.5
|
||||||
|
- digitalocean/anthropic-claude-opus-4
|
||||||
|
- digitalocean/anthropic-claude-opus-4.5
|
||||||
|
- digitalocean/anthropic-claude-opus-4.6
|
||||||
|
- digitalocean/anthropic-claude-opus-4.7
|
||||||
|
- digitalocean/anthropic-claude-sonnet-4
|
||||||
|
- digitalocean/alibaba-qwen3-32b
|
||||||
|
- digitalocean/arcee-trinity-large-thinking
|
||||||
|
- digitalocean/deepseek-3.2
|
||||||
|
- digitalocean/deepseek-r1-distill-llama-70b
|
||||||
|
- digitalocean/gemma-4-31B-it
|
||||||
|
- digitalocean/glm-5
|
||||||
|
- digitalocean/kimi-k2.5
|
||||||
|
- digitalocean/llama3.3-70b-instruct
|
||||||
|
- digitalocean/minimax-m2.5
|
||||||
|
- digitalocean/nvidia-nemotron-3-super-120b
|
||||||
|
- digitalocean/qwen3-coder-flash
|
||||||
|
- digitalocean/qwen3.5-397b-a17b
|
||||||
|
- digitalocean/all-mini-lm-l6-v2
|
||||||
|
- digitalocean/gte-large-en-v1.5
|
||||||
|
- digitalocean/multi-qa-mpnet-base-dot-v1
|
||||||
|
- digitalocean/qwen3-embedding-0.6b
|
||||||
|
- digitalocean/router:software-engineering
|
||||||
google:
|
google:
|
||||||
- google/gemini-2.5-flash
|
- google/gemini-2.5-flash
|
||||||
- google/gemini-2.5-pro
|
- google/gemini-2.5-pro
|
||||||
|
|
@ -22,12 +93,6 @@ providers:
|
||||||
- google/gemini-2.0-flash-lite
|
- google/gemini-2.0-flash-lite
|
||||||
- google/gemini-2.5-flash-preview-tts
|
- google/gemini-2.5-flash-preview-tts
|
||||||
- google/gemini-2.5-pro-preview-tts
|
- google/gemini-2.5-pro-preview-tts
|
||||||
- google/gemma-3-1b-it
|
|
||||||
- google/gemma-3-4b-it
|
|
||||||
- google/gemma-3-12b-it
|
|
||||||
- google/gemma-3-27b-it
|
|
||||||
- google/gemma-3n-e4b-it
|
|
||||||
- google/gemma-3n-e2b-it
|
|
||||||
- google/gemma-4-26b-a4b-it
|
- google/gemma-4-26b-a4b-it
|
||||||
- google/gemma-4-31b-it
|
- google/gemma-4-31b-it
|
||||||
- google/gemini-flash-latest
|
- google/gemini-flash-latest
|
||||||
|
|
@ -40,13 +105,22 @@ providers:
|
||||||
- google/gemini-3.1-pro-preview
|
- google/gemini-3.1-pro-preview
|
||||||
- google/gemini-3.1-pro-preview-customtools
|
- google/gemini-3.1-pro-preview-customtools
|
||||||
- google/gemini-3.1-flash-lite-preview
|
- google/gemini-3.1-flash-lite-preview
|
||||||
|
- google/gemini-3.1-flash-lite
|
||||||
- google/gemini-3-pro-image-preview
|
- google/gemini-3-pro-image-preview
|
||||||
|
- google/gemini-3-pro-image
|
||||||
- google/nano-banana-pro-preview
|
- google/nano-banana-pro-preview
|
||||||
- google/gemini-3.1-flash-image-preview
|
- google/gemini-3.1-flash-image-preview
|
||||||
|
- google/gemini-3.1-flash-image
|
||||||
|
- google/gemini-3.5-flash
|
||||||
- google/lyria-3-clip-preview
|
- google/lyria-3-clip-preview
|
||||||
- google/lyria-3-pro-preview
|
- google/lyria-3-pro-preview
|
||||||
|
- google/gemini-3.1-flash-tts-preview
|
||||||
- google/gemini-robotics-er-1.5-preview
|
- google/gemini-robotics-er-1.5-preview
|
||||||
|
- google/gemini-robotics-er-1.6-preview
|
||||||
- google/gemini-2.5-computer-use-preview-10-2025
|
- google/gemini-2.5-computer-use-preview-10-2025
|
||||||
|
- google/antigravity-preview-05-2026
|
||||||
|
- google/deep-research-max-preview-04-2026
|
||||||
|
- google/deep-research-preview-04-2026
|
||||||
- google/deep-research-pro-preview-12-2025
|
- google/deep-research-pro-preview-12-2025
|
||||||
mistralai:
|
mistralai:
|
||||||
- mistralai/mistral-medium-2505
|
- mistralai/mistral-medium-2505
|
||||||
|
|
@ -60,183 +134,62 @@ providers:
|
||||||
- mistralai/mistral-tiny-latest
|
- mistralai/mistral-tiny-latest
|
||||||
- mistralai/codestral-2508
|
- mistralai/codestral-2508
|
||||||
- mistralai/codestral-latest
|
- mistralai/codestral-latest
|
||||||
|
- mistralai/mistral-code-latest
|
||||||
|
- mistralai/mistral-code-fim-latest
|
||||||
- mistralai/devstral-2512
|
- mistralai/devstral-2512
|
||||||
- mistralai/mistral-vibe-cli-latest
|
|
||||||
- mistralai/devstral-medium-latest
|
- mistralai/devstral-medium-latest
|
||||||
- mistralai/devstral-latest
|
- mistralai/devstral-latest
|
||||||
|
- mistralai/mistral-code-agent-latest
|
||||||
- mistralai/mistral-small-2603
|
- mistralai/mistral-small-2603
|
||||||
- mistralai/mistral-small-latest
|
- mistralai/mistral-small-latest
|
||||||
- mistralai/mistral-vibe-cli-fast
|
- mistralai/mistral-vibe-cli-fast
|
||||||
- mistralai/mistral-small-2506
|
- mistralai/magistral-small-latest
|
||||||
- mistralai/magistral-medium-2509
|
- mistralai/magistral-medium-2509
|
||||||
- mistralai/magistral-medium-latest
|
- mistralai/magistral-medium-latest
|
||||||
- mistralai/magistral-small-2509
|
|
||||||
- mistralai/magistral-small-latest
|
|
||||||
- mistralai/labs-leanstral-2603
|
- mistralai/labs-leanstral-2603
|
||||||
- mistralai/mistral-large-2512
|
- mistralai/mistral-large-2512
|
||||||
- mistralai/mistral-large-latest
|
- mistralai/mistral-large-latest
|
||||||
|
- mistralai/mistral-large-2512
|
||||||
|
- mistralai/mistral-large-latest
|
||||||
- mistralai/ministral-3b-2512
|
- mistralai/ministral-3b-2512
|
||||||
- mistralai/ministral-3b-latest
|
- mistralai/ministral-3b-latest
|
||||||
- mistralai/ministral-8b-2512
|
- mistralai/ministral-8b-2512
|
||||||
- mistralai/ministral-8b-latest
|
- mistralai/ministral-8b-latest
|
||||||
- mistralai/ministral-14b-2512
|
- mistralai/ministral-14b-2512
|
||||||
- mistralai/ministral-14b-latest
|
- mistralai/ministral-14b-latest
|
||||||
- mistralai/mistral-large-2411
|
- mistralai/mistral-medium-3-5
|
||||||
- mistralai/pixtral-large-2411
|
- mistralai/mistral-medium-3.5
|
||||||
- mistralai/pixtral-large-latest
|
- mistralai/mistral-medium-3
|
||||||
- mistralai/mistral-large-pixtral-2411
|
- mistralai/mistral-medium-2604
|
||||||
- mistralai/devstral-small-2507
|
- mistralai/mistral-medium-c21211-r0-75
|
||||||
- mistralai/devstral-medium-2507
|
- mistralai/mistral-vibe-cli-latest
|
||||||
- mistralai/labs-mistral-small-creative
|
- mistralai/mistral-medium-3-5
|
||||||
|
- mistralai/mistral-medium-3.5
|
||||||
|
- mistralai/mistral-medium-3
|
||||||
|
- mistralai/mistral-medium-2604
|
||||||
|
- mistralai/mistral-medium-c21211-r0-75
|
||||||
|
- mistralai/mistral-vibe-cli-latest
|
||||||
|
- mistralai/magistral-small-2509
|
||||||
|
- mistralai/mistral-small-2506
|
||||||
- mistralai/mistral-embed-2312
|
- mistralai/mistral-embed-2312
|
||||||
- mistralai/mistral-embed
|
- mistralai/mistral-embed
|
||||||
- mistralai/codestral-embed
|
- mistralai/codestral-embed
|
||||||
- mistralai/codestral-embed-2505
|
- mistralai/codestral-embed-2505
|
||||||
anthropic:
|
moonshotai:
|
||||||
- anthropic/claude-sonnet-4-6
|
- moonshotai/kimi-k2.5
|
||||||
- anthropic/claude-opus-4-6
|
- moonshotai/kimi-k2.6
|
||||||
- anthropic/claude-opus-4-7
|
- moonshotai/moonshot-v1-32k
|
||||||
- anthropic/claude-opus-4-5-20251101
|
- moonshotai/moonshot-v1-8k
|
||||||
- anthropic/claude-opus-4-5
|
- moonshotai/moonshot-v1-128k-vision-preview
|
||||||
- anthropic/claude-haiku-4-5-20251001
|
- moonshotai/moonshot-v1-auto
|
||||||
- anthropic/claude-haiku-4-5
|
- moonshotai/moonshot-v1-8k-vision-preview
|
||||||
- anthropic/claude-sonnet-4-5-20250929
|
- moonshotai/moonshot-v1-128k
|
||||||
- anthropic/claude-sonnet-4-5
|
- moonshotai/moonshot-v1-32k-vision-preview
|
||||||
- anthropic/claude-opus-4-1-20250805
|
|
||||||
- anthropic/claude-opus-4-1
|
|
||||||
- anthropic/claude-opus-4-20250514
|
|
||||||
- anthropic/claude-opus-4
|
|
||||||
- anthropic/claude-sonnet-4-20250514
|
|
||||||
- anthropic/claude-sonnet-4
|
|
||||||
- anthropic/claude-3-haiku-20240307
|
|
||||||
- anthropic/claude-3-haiku
|
|
||||||
qwen:
|
|
||||||
- qwen/qwen3.6-plus-2026-04-02
|
|
||||||
- qwen/qwen3.6-plus
|
|
||||||
- qwen/wan2.7-image
|
|
||||||
- qwen/deepseek-v3.2
|
|
||||||
- qwen/qwen3-asr-flash-2026-02-10
|
|
||||||
- qwen/qwen3.5-flash-2026-02-23
|
|
||||||
- qwen/qwen3.5-flash
|
|
||||||
- qwen/qwen3.5-122b-a10b
|
|
||||||
- qwen/qwen3.5-35b-a3b
|
|
||||||
- qwen/qwen3.5-27b
|
|
||||||
- qwen/qwen3-coder-next
|
|
||||||
- qwen/qwen3.5-397b-a17b
|
|
||||||
- qwen/qwen3.5-plus-2026-02-15
|
|
||||||
- qwen/qwen3.5-plus
|
|
||||||
- qwen/qwen3-vl-flash-2026-01-22
|
|
||||||
- qwen/qwen3-max-2026-01-23
|
|
||||||
- qwen/qwen-plus-character
|
|
||||||
- qwen/qwen-flash-character
|
|
||||||
- qwen/qwen-flash
|
|
||||||
- qwen/qwen3-vl-plus-2025-12-19
|
|
||||||
- qwen/qwen3-omni-flash-2025-12-01
|
|
||||||
- qwen/qwen3-livetranslate-flash-2025-12-01
|
|
||||||
- qwen/qwen3-livetranslate-flash
|
|
||||||
- qwen/qwen-mt-lite
|
|
||||||
- qwen/qwen-plus-2025-12-01
|
|
||||||
- qwen/qwen-mt-flash
|
|
||||||
- qwen/ccai-pro
|
|
||||||
- qwen/tongyi-tingwu-slp
|
|
||||||
- qwen/qwen3-vl-flash
|
|
||||||
- qwen/qwen3-vl-flash-2025-10-15
|
|
||||||
- qwen/qwen3-omni-flash
|
|
||||||
- qwen/qwen3-omni-flash-2025-09-15
|
|
||||||
- qwen/qwen3-omni-30b-a3b-captioner
|
|
||||||
- qwen/qwen2.5-7b-instruct
|
|
||||||
- qwen/qwen2.5-14b-instruct
|
|
||||||
- qwen/qwen2.5-32b-instruct
|
|
||||||
- qwen/qwen2.5-72b-instruct
|
|
||||||
- qwen/qwen2.5-14b-instruct-1m
|
|
||||||
- qwen/qwen2.5-7b-instruct-1m
|
|
||||||
- qwen/qwen-max-2025-01-25
|
|
||||||
- qwen/qwen-max-latest
|
|
||||||
- qwen/qwen-turbo-2024-11-01
|
|
||||||
- qwen/qwen-turbo-latest
|
|
||||||
- qwen/qwen-plus-latest
|
|
||||||
- qwen/qwen-plus-2025-01-25
|
|
||||||
- qwen/qwq-plus-2025-03-05
|
|
||||||
- qwen/qwen-mt-turbo
|
|
||||||
- qwen/qwen-mt-plus
|
|
||||||
- qwen/qwen-coder-plus
|
|
||||||
- qwen/qwq-plus
|
|
||||||
- qwen/qwen2.5-vl-32b-instruct
|
|
||||||
- qwen/qvq-max
|
|
||||||
- qwen/qwen-omni-turbo
|
|
||||||
- qwen/qwen3-8b
|
|
||||||
- qwen/qwen3-30b-a3b
|
|
||||||
- qwen/qwen3-235b-a22b
|
|
||||||
- qwen/qwen-turbo-2025-04-28
|
|
||||||
- qwen/qwen-plus-2025-04-28
|
|
||||||
- qwen/qwen-vl-max-2025-04-08
|
|
||||||
- qwen/qwen-vl-plus-2025-01-25
|
|
||||||
- qwen/qwen-vl-plus-latest
|
|
||||||
- qwen/qwen-vl-max-latest
|
|
||||||
- qwen/qwen-vl-plus-2025-05-07
|
|
||||||
- qwen/qwen3-coder-plus
|
|
||||||
- qwen/qwen3-coder-480b-a35b-instruct
|
|
||||||
- qwen/qwen3-235b-a22b-instruct-2507
|
|
||||||
- qwen/qwen-plus-2025-07-14
|
|
||||||
- qwen/qwen3-coder-plus-2025-07-22
|
|
||||||
- qwen/qwen3-235b-a22b-thinking-2507
|
|
||||||
- qwen/qwen3-coder-flash
|
|
||||||
- qwen/qwen-vl-max
|
|
||||||
- qwen/qwen-vl-max-2025-08-13
|
|
||||||
- qwen/qwen3-max
|
|
||||||
- qwen/qwen3-max-2025-09-23
|
|
||||||
- qwen/qwen3-vl-plus
|
|
||||||
- qwen/qwen3-vl-235b-a22b-instruct
|
|
||||||
- qwen/qwen3-vl-235b-a22b-thinking
|
|
||||||
- qwen/qwen3-30b-a3b-thinking-2507
|
|
||||||
- qwen/qwen3-30b-a3b-instruct-2507
|
|
||||||
- qwen/qwen3-14b
|
|
||||||
- qwen/qwen3-32b
|
|
||||||
- qwen/qwen3-0.6b
|
|
||||||
- qwen/qwen3-4b
|
|
||||||
- qwen/qwen3-1.7b
|
|
||||||
- qwen/qwen-vl-plus
|
|
||||||
- qwen/qwen3-coder-plus-2025-09-23
|
|
||||||
- qwen/qwen3-vl-plus-2025-09-23
|
|
||||||
- qwen/qwen-plus-2025-09-11
|
|
||||||
- qwen/qwen3-next-80b-a3b-thinking
|
|
||||||
- qwen/qwen3-next-80b-a3b-instruct
|
|
||||||
- qwen/qwen3-max-preview
|
|
||||||
- qwen/qwen2-7b-instruct
|
|
||||||
- qwen/qwen-max
|
|
||||||
- qwen/qwen-plus
|
|
||||||
- qwen/qwen-turbo
|
|
||||||
z-ai:
|
|
||||||
- z-ai/glm-4.5
|
|
||||||
- z-ai/glm-4.5-air
|
|
||||||
- z-ai/glm-4.6
|
|
||||||
- z-ai/glm-4.7
|
|
||||||
- z-ai/glm-5
|
|
||||||
- z-ai/glm-5-turbo
|
|
||||||
- z-ai/glm-5.1
|
|
||||||
x-ai:
|
|
||||||
- x-ai/grok-3
|
|
||||||
- x-ai/grok-3-mini
|
|
||||||
- x-ai/grok-4-0709
|
|
||||||
- x-ai/grok-4-1-fast-non-reasoning
|
|
||||||
- x-ai/grok-4-1-fast-reasoning
|
|
||||||
- x-ai/grok-4-fast-non-reasoning
|
|
||||||
- x-ai/grok-4-fast-reasoning
|
|
||||||
- x-ai/grok-4.20-0309-non-reasoning
|
|
||||||
- x-ai/grok-4.20-0309-reasoning
|
|
||||||
- x-ai/grok-4.20-multi-agent-0309
|
|
||||||
- x-ai/grok-code-fast-1
|
|
||||||
- x-ai/grok-imagine-image
|
|
||||||
- x-ai/grok-imagine-video
|
|
||||||
openai:
|
openai:
|
||||||
|
- openai/gpt-3.5-turbo
|
||||||
|
- openai/gpt-3.5-turbo-16k
|
||||||
- openai/gpt-4-0613
|
- openai/gpt-4-0613
|
||||||
- openai/gpt-4
|
- openai/gpt-4
|
||||||
- openai/gpt-3.5-turbo
|
|
||||||
- openai/gpt-5.4-mini
|
|
||||||
- openai/gpt-5.4
|
|
||||||
- openai/gpt-5.4-nano-2026-03-17
|
|
||||||
- openai/gpt-5.4-nano
|
|
||||||
- openai/gpt-5.4-mini-2026-03-17
|
|
||||||
- openai/gpt-3.5-turbo-instruct
|
- openai/gpt-3.5-turbo-instruct
|
||||||
- openai/gpt-3.5-turbo-instruct-0914
|
- openai/gpt-3.5-turbo-instruct-0914
|
||||||
- openai/gpt-3.5-turbo-1106
|
- openai/gpt-3.5-turbo-1106
|
||||||
|
|
@ -306,81 +259,137 @@ providers:
|
||||||
- openai/gpt-5.4-2026-03-05
|
- openai/gpt-5.4-2026-03-05
|
||||||
- openai/gpt-5.4-pro
|
- openai/gpt-5.4-pro
|
||||||
- openai/gpt-5.4-pro-2026-03-05
|
- openai/gpt-5.4-pro-2026-03-05
|
||||||
- openai/gpt-3.5-turbo-16k
|
- openai/gpt-5.4
|
||||||
|
- openai/gpt-5.4-nano-2026-03-17
|
||||||
|
- openai/gpt-5.4-nano
|
||||||
|
- openai/gpt-5.4-mini-2026-03-17
|
||||||
|
- openai/gpt-5.4-mini
|
||||||
|
- openai/gpt-5.5
|
||||||
|
- openai/gpt-5.5-2026-04-23
|
||||||
|
- openai/gpt-5.5-pro
|
||||||
|
- openai/gpt-5.5-pro-2026-04-23
|
||||||
|
- openai/chat-latest
|
||||||
- openai/ft:gpt-3.5-turbo-0613:katanemo::8CMZbm0P
|
- openai/ft:gpt-3.5-turbo-0613:katanemo::8CMZbm0P
|
||||||
deepseek:
|
qwen:
|
||||||
- deepseek/deepseek-chat
|
- qwen/qwen3.7-plus-2026-05-26
|
||||||
- deepseek/deepseek-reasoner
|
- qwen/qwen3.7-plus
|
||||||
moonshotai:
|
- qwen/kimi-k2.6
|
||||||
- moonshotai/kimi-for-coding
|
- qwen/glm-5.1
|
||||||
- moonshotai/kimi-k2-thinking
|
- qwen/qwen3.7-max-2026-05-17
|
||||||
- moonshotai/moonshot-v1-auto
|
- qwen/qwen3.7-max-preview
|
||||||
- moonshotai/moonshot-v1-32k-vision-preview
|
- qwen/qwen3.7-max-2026-05-20
|
||||||
- moonshotai/moonshot-v1-128k
|
- qwen/qwen3.7-max
|
||||||
- moonshotai/kimi-k2-turbo-preview
|
- qwen/deepseek-v4-flash
|
||||||
- moonshotai/kimi-k2-0905-preview
|
- qwen/deepseek-v4-pro
|
||||||
- moonshotai/moonshot-v1-128k-vision-preview
|
- qwen/qwen3.6-27b
|
||||||
- moonshotai/moonshot-v1-32k
|
- qwen/qwen3.5-plus-2026-04-20
|
||||||
- moonshotai/moonshot-v1-8k-vision-preview
|
- qwen/qwen3.6-max-preview
|
||||||
- moonshotai/kimi-k2.5
|
- qwen/qwen3.6-35b-a3b
|
||||||
- moonshotai/moonshot-v1-8k
|
- qwen/qwen3.6-flash
|
||||||
- moonshotai/kimi-k2-thinking-turbo
|
- qwen/qwen3.6-flash-2026-04-16
|
||||||
- moonshotai/kimi-k2-0711-preview
|
- qwen/qwen3.5-omni-plus-2026-03-15
|
||||||
|
- qwen/qwen3.5-omni-plus
|
||||||
|
- qwen/qwen3.5-omni-flash-2026-03-15
|
||||||
|
- qwen/qwen3.5-omni-flash
|
||||||
|
- qwen/qwen3.6-plus-2026-04-02
|
||||||
|
- qwen/qwen3.6-plus
|
||||||
|
- qwen/wan2.7-image
|
||||||
|
- qwen/deepseek-v3.2
|
||||||
|
- qwen/qwen3-asr-flash-2026-02-10
|
||||||
|
- qwen/qwen3.5-flash-2026-02-23
|
||||||
|
- qwen/qwen3.5-flash
|
||||||
|
- qwen/qwen3.5-122b-a10b
|
||||||
|
- qwen/qwen3.5-35b-a3b
|
||||||
|
- qwen/qwen3.5-27b
|
||||||
|
- qwen/qwen3-coder-next
|
||||||
|
- qwen/qwen3.5-397b-a17b
|
||||||
|
- qwen/qwen3.5-plus-2026-02-15
|
||||||
|
- qwen/qwen3.5-plus
|
||||||
|
- qwen/qwen3-vl-flash-2026-01-22
|
||||||
|
- qwen/qwen3-max-2026-01-23
|
||||||
|
- qwen/qwen-plus-character
|
||||||
|
- qwen/qwen-flash-character
|
||||||
|
- qwen/qwen-flash
|
||||||
|
- qwen/qwen3-vl-plus-2025-12-19
|
||||||
|
- qwen/qwen3-omni-flash-2025-12-01
|
||||||
|
- qwen/qwen3-livetranslate-flash-2025-12-01
|
||||||
|
- qwen/qwen3-livetranslate-flash
|
||||||
|
- qwen/qwen-mt-lite
|
||||||
|
- qwen/qwen-plus-2025-12-01
|
||||||
|
- qwen/qwen-mt-flash
|
||||||
|
- qwen/ccai-pro
|
||||||
|
- qwen/tongyi-tingwu-slp
|
||||||
|
- qwen/qwen3-vl-flash
|
||||||
|
- qwen/qwen3-vl-flash-2025-10-15
|
||||||
|
- qwen/qwen3-omni-flash
|
||||||
|
- qwen/qwen3-omni-flash-2025-09-15
|
||||||
|
- qwen/qwen3-omni-30b-a3b-captioner
|
||||||
|
- qwen/qwen-plus-latest
|
||||||
|
- qwen/qwen-plus-2025-01-25
|
||||||
|
- qwen/qwq-plus-2025-03-05
|
||||||
|
- qwen/qwen-mt-turbo
|
||||||
|
- qwen/qwen-mt-plus
|
||||||
|
- qwen/qwen-coder-plus
|
||||||
|
- qwen/qwq-plus
|
||||||
|
- qwen/qvq-max
|
||||||
|
- qwen/qwen-omni-turbo
|
||||||
|
- qwen/qwen3-8b
|
||||||
|
- qwen/qwen3-30b-a3b
|
||||||
|
- qwen/qwen3-235b-a22b
|
||||||
|
- qwen/qwen-plus-2025-04-28
|
||||||
|
- qwen/qwen3-coder-plus
|
||||||
|
- qwen/qwen3-coder-480b-a35b-instruct
|
||||||
|
- qwen/qwen3-235b-a22b-instruct-2507
|
||||||
|
- qwen/qwen-plus-2025-07-14
|
||||||
|
- qwen/qwen3-coder-plus-2025-07-22
|
||||||
|
- qwen/qwen3-235b-a22b-thinking-2507
|
||||||
|
- qwen/qwen3-coder-flash
|
||||||
|
- qwen/qwen-vl-max
|
||||||
|
- qwen/qwen3-max
|
||||||
|
- qwen/qwen3-max-2025-09-23
|
||||||
|
- qwen/qwen3-vl-plus
|
||||||
|
- qwen/qwen3-vl-235b-a22b-instruct
|
||||||
|
- qwen/qwen3-vl-235b-a22b-thinking
|
||||||
|
- qwen/qwen3-30b-a3b-thinking-2507
|
||||||
|
- qwen/qwen3-30b-a3b-instruct-2507
|
||||||
|
- qwen/qwen3-14b
|
||||||
|
- qwen/qwen3-32b
|
||||||
|
- qwen/qwen-vl-plus
|
||||||
|
- qwen/qwen3-coder-plus-2025-09-23
|
||||||
|
- qwen/qwen3-vl-plus-2025-09-23
|
||||||
|
- qwen/qwen-plus-2025-09-11
|
||||||
|
- qwen/qwen3-next-80b-a3b-thinking
|
||||||
|
- qwen/qwen3-next-80b-a3b-instruct
|
||||||
|
- qwen/qwen3-max-preview
|
||||||
|
- qwen/qwen2-7b-instruct
|
||||||
|
- qwen/qwen-max
|
||||||
|
- qwen/qwen-plus
|
||||||
|
- qwen/qwen-turbo
|
||||||
|
x-ai:
|
||||||
|
- x-ai/grok-4.20-0309-non-reasoning
|
||||||
|
- x-ai/grok-4.20-0309-reasoning
|
||||||
|
- x-ai/grok-4.20-multi-agent-0309
|
||||||
|
- x-ai/grok-4.3
|
||||||
|
- x-ai/grok-build-0.1
|
||||||
|
- x-ai/grok-imagine-image
|
||||||
|
- x-ai/grok-imagine-video
|
||||||
|
- x-ai/grok-imagine-video-1.5-preview
|
||||||
xiaomi:
|
xiaomi:
|
||||||
- xiaomi/mimo-v2-flash
|
- xiaomi/mimo-v2-flash
|
||||||
- xiaomi/mimo-v2-omni
|
- xiaomi/mimo-v2-omni
|
||||||
- xiaomi/mimo-v2-pro
|
- xiaomi/mimo-v2-pro
|
||||||
chatgpt:
|
- xiaomi/mimo-v2.5
|
||||||
- chatgpt/gpt-5.4
|
- xiaomi/mimo-v2.5-asr
|
||||||
- chatgpt/gpt-5.3-codex
|
- xiaomi/mimo-v2.5-pro
|
||||||
- chatgpt/gpt-5.2
|
z-ai:
|
||||||
digitalocean:
|
- z-ai/glm-4.5
|
||||||
- digitalocean/openai-gpt-4.1
|
- z-ai/glm-4.5-air
|
||||||
- digitalocean/openai-gpt-4o
|
- z-ai/glm-4.6
|
||||||
- digitalocean/openai-gpt-4o-mini
|
- z-ai/glm-4.7
|
||||||
- digitalocean/openai-gpt-5
|
- z-ai/glm-5
|
||||||
- digitalocean/openai-gpt-5-mini
|
- z-ai/glm-5-turbo
|
||||||
- digitalocean/openai-gpt-5-nano
|
- z-ai/glm-5.1
|
||||||
- digitalocean/openai-gpt-5.1-codex-max
|
|
||||||
- digitalocean/openai-gpt-5.2
|
|
||||||
- digitalocean/openai-gpt-5.2-pro
|
|
||||||
- digitalocean/openai-gpt-5.3-codex
|
|
||||||
- digitalocean/openai-gpt-5.4
|
|
||||||
- digitalocean/openai-gpt-5.4-mini
|
|
||||||
- digitalocean/openai-gpt-5.4-nano
|
|
||||||
- digitalocean/openai-gpt-5.4-pro
|
|
||||||
- digitalocean/openai-gpt-oss-120b
|
|
||||||
- digitalocean/openai-gpt-oss-20b
|
|
||||||
- digitalocean/openai-o1
|
|
||||||
- digitalocean/openai-o3
|
|
||||||
- digitalocean/openai-o3-mini
|
|
||||||
- digitalocean/anthropic-claude-4.1-opus
|
|
||||||
- digitalocean/anthropic-claude-4.5-sonnet
|
|
||||||
- digitalocean/anthropic-claude-4.6-sonnet
|
|
||||||
- digitalocean/anthropic-claude-haiku-4.5
|
|
||||||
- digitalocean/anthropic-claude-opus-4
|
|
||||||
- digitalocean/anthropic-claude-opus-4.5
|
|
||||||
- digitalocean/anthropic-claude-opus-4.6
|
|
||||||
- digitalocean/anthropic-claude-opus-4.7
|
|
||||||
- digitalocean/anthropic-claude-sonnet-4
|
|
||||||
- digitalocean/alibaba-qwen3-32b
|
|
||||||
- digitalocean/arcee-trinity-large-thinking
|
|
||||||
- digitalocean/deepseek-3.2
|
|
||||||
- digitalocean/deepseek-r1-distill-llama-70b
|
|
||||||
- digitalocean/gemma-4-31B-it
|
|
||||||
- digitalocean/glm-5
|
|
||||||
- digitalocean/kimi-k2.5
|
|
||||||
- digitalocean/llama3.3-70b-instruct
|
|
||||||
- digitalocean/minimax-m2.5
|
|
||||||
- digitalocean/nvidia-nemotron-3-super-120b
|
|
||||||
- digitalocean/qwen3-coder-flash
|
|
||||||
- digitalocean/qwen3.5-397b-a17b
|
|
||||||
- digitalocean/all-mini-lm-l6-v2
|
|
||||||
- digitalocean/gte-large-en-v1.5
|
|
||||||
- digitalocean/multi-qa-mpnet-base-dot-v1
|
|
||||||
- digitalocean/qwen3-embedding-0.6b
|
|
||||||
- digitalocean/router:software-engineering
|
|
||||||
metadata:
|
metadata:
|
||||||
total_providers: 13
|
total_providers: 13
|
||||||
total_models: 364
|
total_models: 375
|
||||||
last_updated: 2026-04-20T00:00:00.000000+00:00
|
last_updated: 2026-06-09T22:50:12.186709+00:00
|
||||||
|
|
|
||||||
|
|
@ -223,6 +223,7 @@ impl From<MessagesRole> for Role {
|
||||||
match val {
|
match val {
|
||||||
MessagesRole::User => Role::User,
|
MessagesRole::User => Role::User,
|
||||||
MessagesRole::Assistant => Role::Assistant,
|
MessagesRole::Assistant => Role::Assistant,
|
||||||
|
MessagesRole::System => Role::System,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -340,6 +341,11 @@ impl TryFrom<MessagesMessage> for BedrockMessage {
|
||||||
let role = match message.role {
|
let role = match message.role {
|
||||||
MessagesRole::User => ConversationRole::User,
|
MessagesRole::User => ConversationRole::User,
|
||||||
MessagesRole::Assistant => ConversationRole::Assistant,
|
MessagesRole::Assistant => ConversationRole::Assistant,
|
||||||
|
MessagesRole::System => {
|
||||||
|
return Err(TransformError::UnsupportedConversion(
|
||||||
|
"System messages must be set via the system prompt, not messages".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut content_blocks = Vec::new();
|
let mut content_blocks = Vec::new();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ This demo shows how you can use user preferences to route user prompts to approp
|
||||||
|
|
||||||
## How to start the demo
|
## How to start the demo
|
||||||
|
|
||||||
Make sure you have Plano CLI installed (`pip install planoai==0.4.23` or `uv tool install planoai==0.4.23`).
|
Make sure you have Plano CLI installed (`pip install planoai==0.4.25` or `uv tool install planoai==0.4.25`).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd demos/llm_routing/preference_based_routing
|
cd demos/llm_routing/preference_based_routing
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ from sphinxawesome_theme.postprocess import Icons
|
||||||
project = "Plano Docs"
|
project = "Plano Docs"
|
||||||
copyright = "2026, Katanemo Labs, a DigitalOcean Company"
|
copyright = "2026, Katanemo Labs, a DigitalOcean Company"
|
||||||
author = "Katanemo Labs, Inc"
|
author = "Katanemo Labs, Inc"
|
||||||
release = " v0.4.23"
|
release = " v0.4.25"
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ Plano's CLI allows you to manage and interact with the Plano efficiently. To ins
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ uv tool install planoai==0.4.23
|
$ uv tool install planoai==0.4.25
|
||||||
|
|
||||||
**Option 2: Install with pip (Traditional)**
|
**Option 2: Install with pip (Traditional)**
|
||||||
|
|
||||||
|
|
@ -51,7 +51,7 @@ Plano's CLI allows you to manage and interact with the Plano efficiently. To ins
|
||||||
|
|
||||||
$ python -m venv venv
|
$ python -m venv venv
|
||||||
$ source venv/bin/activate # On Windows, use: venv\Scripts\activate
|
$ source venv/bin/activate # On Windows, use: venv\Scripts\activate
|
||||||
$ pip install planoai==0.4.23
|
$ pip install planoai==0.4.25
|
||||||
|
|
||||||
|
|
||||||
.. _llm_routing_quickstart:
|
.. _llm_routing_quickstart:
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ Create a ``docker-compose.yml`` file with the following configuration:
|
||||||
# docker-compose.yml
|
# docker-compose.yml
|
||||||
services:
|
services:
|
||||||
plano:
|
plano:
|
||||||
image: katanemo/plano:0.4.23
|
image: katanemo/plano:0.4.25
|
||||||
container_name: plano
|
container_name: plano
|
||||||
ports:
|
ports:
|
||||||
- "10000:10000" # ingress (client -> plano)
|
- "10000:10000" # ingress (client -> plano)
|
||||||
|
|
@ -153,7 +153,7 @@ Create a ``plano-deployment.yaml``:
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: plano
|
- name: plano
|
||||||
image: katanemo/plano:0.4.23
|
image: katanemo/plano:0.4.25
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 12000 # LLM gateway (chat completions, model routing)
|
- containerPort: 12000 # LLM gateway (chat completions, model routing)
|
||||||
name: llm-gateway
|
name: llm-gateway
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue