Skip to content

Add GreenPT provider - #3726

Merged
rekram1-node merged 7 commits into
anomalyco:devfrom
Casburggraaf:add-greenpt-provider
Jul 30, 2026
Merged

Add GreenPT provider#3726
rekram1-node merged 7 commits into
anomalyco:devfrom
Casburggraaf:add-greenpt-provider

Conversation

@Casburggraaf

@Casburggraaf Casburggraaf commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Adds GreenPT (https://greenpt.ai) as a provider: 24 chat models plus 2 speech-to-text models, served through an OpenAI-compatible endpoint at https://api.greenpt.ai/v1.

This supersedes #2963, which a stale bot closed while I was preparing an update. GitHub would not let me reopen it, so this is the same branch with all review feedback applied. Every model that reuses existing metadata goes through base_model and carries only GreenPT-specific overrides.

Pricing

Costs are USD per million tokens, converted from GreenPT's EUR list price at 1.14 USD/EUR (rate captured 2026-07-24). Every EUR-sourced file carries that rate and its sources in a top-of-file comment.

Speech-to-text is billed per hour and published here as the standard EUR 0.23/hour pre-recorded rate (USD 0.00437/minute). A 50% promotion runs through 31 August 2026, but the durable standard rate is published so the catalog stays correct after it ends. Live and multilingual tiers are priced higher and cannot be represented in the single-rate field.

Context limits

Provider-specific limit.context overrides where GreenPT serves a smaller window than the base metadata:

model base GreenPT
gemma-3-27b-it 128k 40k
devstral-2-123b-instruct-2512 262,144 200k
llama-3.3-70b-instruct 128k 100k
qwen3-coder-30b-a3b-instruct 262,144 128k

Modalities

Each entry declares exactly what the GreenPT endpoint serves, per the capability tags on the model cards. Both directions occur:

model override model card
gpt-oss-120b image added "Large open model with vision, function calling..."
green-r, green-r-raw image added Text, Images, Documents, Multilingual
green-l, green-l-raw image added Text, Images, Documents, Multilingual
mistral-small-3.2-24b-instruct-2506 image added Chat, Vision, Function calling
kimi-k2.6, kimi-k2.6-fast video dropped, image kept Chat, Reasoning, Agentic coding, Vision
kimi-k2.7-code image + video dropped, text-only Chat, Reasoning, Coding, Agentic tasks (no vision)
qwen3.6-35b-a3b video + audio dropped, image kept Chat, Code, Vision
qwen3.5-397b-a17b image + video + audio dropped, text-only Chat, Code generation, Agentic tasks, Logical reasoning (no vision)
llama-3.3-70b-instruct attachment = false Chat, Instruction following, Multilingual (text-only)

kimi-k2.7-code and qwen3.5-397b-a17b are deliberately text-only: GreenPT serves them as text endpoints and their model cards carry no vision capability, unlike their kimi-k2.6 and qwen3.6 siblings.

Reasoning controls

The documented effort enum is declared only on the GreenPT-hosted models whose control is documented first-party and implemented in the proxy itself:

# gemma4, green-r, green-r-raw
reasoning_options = [{ type = "effort", values = ["none", "minimal", "low", "medium", "high"] }]

Thinking is enabled by default, "none" disables it, and the OpenAI-spec levels are accepted for compatibility.

The other eleven reasoning entries are third-party pass-through endpoints: GreenPT forwards reasoning_effort upstream unchanged and does not verify accepted values per model, so they declare reasoning_options = [] rather than an assumed enum.

Also

Renamed gemma-4-26b-a4b-it to gemma4 to match the id the API actually serves. The upstream weights are still referenced via base_model.

Rebased onto current dev. bun validate is green. bun test shows no failures beyond the 3 pre-existing packages/sdk/src/snapshot.js module-resolution errors that also fail on a clean dev checkout.

Evidence

Claim Source
Token prices (EUR list, converted at 1.14) https://docs.greenpt.ai/pricing and https://docs.greenpt.ai/model-cards
Context limits and max output https://docs.greenpt.ai/model-cards, per-model cards
Modalities / vision per endpoint https://docs.greenpt.ai/model-cards, per-model capability tags (table above)
reasoning_effort values on GreenPT-hosted models https://docs.greenpt.ai/chat-completion (request body and Notes)
Speech-to-text hourly rates and promotion window https://docs.greenpt.ai/pricing, speech-to-text section
Served model ids (including gemma4) https://docs.greenpt.ai/models

Casburggraaf and others added 6 commits July 24, 2026 21:56
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reference existing models/ metadata via base_model instead of
re-declaring provider-agnostic facts inline, per review feedback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Upstream schema now requires a non-empty description on models;
base_model entries inherit it, so add it to the self-contained ones.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reconciles every GreenPT entry with the live production catalog and addresses
the data-accuracy review:

- Context limits: add provider-specific limit.context where GreenPT serves a
  smaller window than the base metadata (gemma-3-27b-it 40k, devstral-2 200k,
  llama-3.3-70b 100k, qwen3-coder-30b 128k).
- Speech-to-text: reprice green-s / green-s-pro to the current EUR 0.12/hour
  pre-recorded rate, with the standard EUR 0.23/hour noted inline.
- Modalities: override attachment and modalities.input so each entry advertises
  exactly what GreenPT serves. Adds image input to gpt-oss-120b, green-r,
  green-r-raw, green-l, green-l-raw and mistral-small-3.2; drops the inherited
  video/audio modalities from qwen3.6-35b-a3b, qwen3.5-397b-a17b and the Kimi
  entries.
- Reasoning controls: reasoning_options now lists the full accepted effort set
  (none, minimal, low, medium, high) on every reasoning model.
- Token costs: refresh prices, including glm-5.2, glm-5.1, minimax-m2.5 and the
  three Kimi entries.
The GreenPT API serves this model under the id `gemma4`; the previous filename
did not resolve against the live endpoint. The upstream weights are still
referenced through base_model.
@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [possible mistake] providers/greenpt/models/gemma4.toml:3 - Check: reasoning_options must reflect GreenPT’s verified request surface per model (audit-reasoning-options: do not copy a full effort enum; require explicit evidence for none and minimal; OpenAI-compatible acceptance alone is weak). Why: The same ["none", "minimal", "low", "medium", "high"] set is applied to every reasoning entry (including holo2-30b-a3b, mistral-medium-3.5-128b, gpt-oss-120b / green-r*, Kimi, GLM, Qwen, MiniMax). Other providers document model-specific subsets for the same weights (e.g. gpt-oss often excludes none). Overstated controls mislead clients. Action: Cite GreenPT docs or API tests for the exact request field and each value per model (or family). Drop unverified values; use reasoning_options = [] when no control is verified. Optionally note the request syntax next to the option (e.g. # API: {"reasoning_effort": "<value>"}).
  • [medium] [possible mistake] providers/greenpt/models/green-s.toml:15 - Check: Catalog cost should be durable provider pricing, not a short-lived promotion. Why: green-s / green-s-pro publish promotional EUR 0.12/hour (input = 0.00228) through 31 Aug 2026; standard EUR 0.23/hour (~$0.00437/min) is only in comments. After the promo, the API will understate STT cost. Action: Set input to the standard USD/minute rate; keep the promo as a top-of-file note if desired.
  • [medium] [violation] providers/greenpt/models/green-s.toml:9 - Check: Non-USD source prices must be converted to USD with rate and date in a leading top-of-file comment (AGENTS.md Cost Schema). Why: STT comments document EUR→USD at 1.14 with no rate date, and sit under [cost] (not above the first key). Chat costs look EUR-scaled (e.g. 0.228, 0.57) but have no conversion notes. Action: Add a top-of-file comment on every EUR-sourced file with rate, date, and what it applies to; move STT notes there.
  • [low] [possible mistake] .pr-review/pull-request.json:4 - Check: Data PRs should cite first-party sources mapped to claims (pricing, context overrides, modalities, reasoning). Why: The body describes production-catalog reconciliation but does not clearly map URLs to each material claim (token prices, 40k/100k/128k/200k contexts, vision/STT modalities, effort enum). Action: Add an Evidence section with direct GreenPT pricing/docs/API links and state what each supports.

- Add the required top-of-file cost-conversion comment (rate 1.14 USD/EUR,
  captured 2026-07-24, with sources) to every EUR-sourced file, per the
  AGENTS.md cost schema rule.
- Scope reasoning_options to the GreenPT-hosted models whose reasoning control
  is documented first-party (gemma4, green-r, green-r-raw). The third-party
  pass-through endpoints forward reasoning_effort upstream unchanged and their
  per-model accepted values are not verified, so they now declare [] rather
  than an assumed effort enum.
- Publish the standard EUR 0.23/hour speech-to-text rate (USD 0.00437/minute)
  instead of the temporary promotional rate, so the catalog stays correct after
  the promotion ends on 2026-08-31. The promotion is documented in the header.
@Casburggraaf

Copy link
Copy Markdown
Contributor Author

Thanks, this was a useful pass. All four items are addressed in c004f2c.

1. [high] reasoning_options overstated. Fair challenge, and you were right that OpenAI-compatible acceptance is not evidence. I have scoped the effort enum to the three GreenPT-hosted models whose control is documented first-party, where the proxy itself implements the contract (gemma4, green-r, green-r-raw), and annotated them with the source:

# reasoning_effort: thinking is enabled by default, "none" disables it, and
# minimal/low/medium/high are accepted. See https://docs.greenpt.ai/chat-completion

The other eleven entries are third-party pass-through endpoints: GreenPT forwards reasoning_effort upstream unchanged and does not verify the accepted values per model. Rather than assume a set, those now declare reasoning_options = [], including gpt-oss-120b, holo2-30b-a3b, mistral-medium-3.5-128b and the GLM / Kimi / Qwen / MiniMax entries. I would rather under-claim here than publish a control we have not confirmed. If we verify per-model behaviour later I will submit them separately with the test output.

2. [medium] Promotional speech-to-text price. Agreed, and changed. cost.input is now the standard EUR 0.23/hour, USD 0.00437/minute. The promotion is recorded in the header instead, so the catalog stays correct after 31 August 2026.

3. [medium] Missing conversion comment. Fixed on every EUR-sourced file, above the first key as the AGENTS.md cost schema requires:

# Cost: converted from GreenPT's EUR list price at 1.14 USD/EUR (rate captured 2026-07-24).
# Sources: https://docs.greenpt.ai/pricing and https://docs.greenpt.ai/model-cards

4. [low] Evidence. Added an Evidence section to the PR description mapping each class of claim to its source.

bun validate is green.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [medium] [possible mistake] providers/greenpt/models/kimi-k2.7-code.toml:4 - Check: Provider modality overrides must match what GreenPT actually serves. Why: This entry forces attachment = false and modalities.input = ["text"], while kimi-k2.6 / kimi-k2.6-fast keep image input and the PR body says all three Kimi entries are vision-only (video dropped). Base metadata is multimodal. Action: Verify against GreenPT model cards/API; if vision is served, set attachment = true and input = ["text", "image"]; if text-only is correct, keep the TOML and correct the PR description.
  • [medium] [possible mistake] providers/greenpt/models/qwen3.5-397b-a17b.toml:4 - Check: Multimodal base models should not silently lose image input without evidence. Why: This strips to text-only (attachment = false, input = ["text"]), but sibling qwen3.6-35b-a3b keeps image and the PR body only claims dropping inherited video/audio for both Qwen entries. Base alibaba/qwen3.5-397b-a17b is multimodal. Action: Confirm GreenPT’s served modalities; restore image (+ attachment = true) if supported, or document that this deployment is text-only.
  • [medium] [possible mistake] providers/greenpt/models/gpt-oss-120b.toml:4 - Check: Image modality claims for gpt-oss-derived IDs. Why: gpt-oss-120b, green-r, and green-r-raw set attachment = true and modalities.input = ["text", "image"], but models/openai/gpt-oss-120b is text-only. That is a large capability jump for the same base weights. Action: Verify GreenPT accepts image parts for these exact model IDs; if not, drop the image overrides and leave text-only inheritance.
  • [low] [possible mistake] .pr-review/pull-request.json - Check: PR body should match the final catalog data and map citations to claims. Why: The body still describes promotional STT pricing as published and full reasoning_options on every reasoning model, but the final TOMLs publish the standard STT rate and scope effort controls to gemma4 / green-r / green-r-raw only. Action: Update the PR body to the final prices/options and note which first-party pages support modalities, limits, and reasoning controls.

@Casburggraaf

Copy link
Copy Markdown
Contributor Author

Thanks, the fourth point was a real miss on my side and the first three were worth asking about. I have rewritten the PR description to match the final data exactly, including a per-model modality table with the supporting model-card capability tags.

On the three modality questions, the TOMLs are correct and the old description was the inaccurate part, so I kept the data and fixed the text:

kimi-k2.7-code text-only. Correct as published. Its model card lists Chat, Reasoning, Coding, Agentic tasks with no vision capability, unlike kimi-k2.6 / kimi-k2.6-fast, which do list Vision and therefore keep image input. The old description wrongly lumped all three together as "vision only"; that sentence is gone.

qwen3.5-397b-a17b text-only. Also correct. Its card lists Chat, Code generation, Agentic tasks and Logical reasoning with no vision capability, whereas qwen3.6-35b-a3b explicitly lists Vision and keeps image. The old description only mentioned dropping video/audio and did not state that image was dropped for this one; now spelled out.

Image on the gpt-oss-derived ids. GreenPT serves these with image input even though the base metadata is text-only. The gpt-oss-120b model card reads "Large open model with vision, function calling, and long-context reasoning support", and the green-r / green-r-raw cards list Text, Images, Documents, Multilingual. That is the deployment difference the override is meant to express.

I also went the other way where our deployment is narrower than the base: llama-3.3-70b-instruct now sets attachment = false, since its card is text-only while the base metadata sets attachment = true.

Sources for each claim are in the Evidence table at the bottom of the description. bun validate is green.

@rekram1-node
rekram1-node merged commit b424381 into anomalyco:dev Jul 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants