mirror of
https://github.com/katanemo/plano.git
synced 2026-06-17 15:25:17 +02:00
Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
440ee1e1ef | ||
|
|
ecf864df25 |
13 changed files with 23 additions and 15 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.24 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.24
|
${{ 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.24 ${{ 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.24
|
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.24
|
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.24"
|
__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.24")
|
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.24"
|
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.24"
|
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",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.24` or `uv tool install planoai==0.4.24`).
|
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.24"
|
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.24
|
$ 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.24
|
$ 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.24
|
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.24
|
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