feat: add evolink provider#1773
Conversation
Greptile SummaryThis PR adds EvoLink as a new channel provider, following the same pattern used by
Confidence Score: 5/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Incoming LLM Request] --> B{Channel Type?}
B -->|evolink| C[openai.PlatformOpenAI Transformer]
B -->|evolink_anthropic| D[anthropic.PlatformDirect Transformer]
C --> E["https://direct.evolink.ai/v1\n/chat/completions, /embeddings,\n/images/*, /videos/*"]
D --> F["https://direct.evolink.ai\n/v1/messages"]
E --> G[EvoLink Upstream API]
F --> G
Reviews (2): Last reviewed commit: "feat: add EvoLink as a built-in provider..." | Re-trigger Greptile |
Live validation evidenceBoth channel types verified end-to-end against the real EvoLink API (API key omitted; requests run with proxy env vars unset to mirror a clean CI environment). 1)
|
Add first-class EvoLink provider support with two channel types: - evolink: OpenAI-compatible chat completions (base URL https://direct.evolink.ai/v1) - evolink_anthropic: Anthropic Messages format (base URL https://direct.evolink.ai, anthropic.PlatformDirect) Both reuse existing outbound transformers via config only (mirrors the siliconflow / aihubmix_anthropic patterns); no new transformer package. Backend: add the two types to the channel ent schema enum, default endpoints map, and the OpenAI / Anthropic transformer switch in channel_llm.go; regenerate ent + GraphQL. Frontend: register both types in the zod schema, channel/provider configs and provider map, add an EvolinkIcon component, and add en/zh i18n keys. Verified against the live API: gpt-5.2 via /v1/chat/completions and claude-opus-4-8 via /v1/messages both return HTTP 200. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7c72729 to
b33c218
Compare
|
Rebased onto the latest Re-verified locally after the rebase:
The Test/Build/Lint workflows are currently in |
Add first-class EvoLink provider support with two channel types: - evolink: OpenAI-compatible chat completions (base URL https://direct.evolink.ai/v1) - evolink_anthropic: Anthropic Messages format (base URL https://direct.evolink.ai, anthropic.PlatformDirect) Both reuse existing outbound transformers via config only (mirrors the siliconflow / aihubmix_anthropic patterns); no new transformer package. Backend: add the two types to the channel ent schema enum, default endpoints map, and the OpenAI / Anthropic transformer switch in channel_llm.go; regenerate ent + GraphQL. Frontend: register both types in the zod schema, channel/provider configs and provider map, add an EvolinkIcon component, and add en/zh i18n keys. Verified against the live API: gpt-5.2 via /v1/chat/completions and claude-opus-4-8 via /v1/messages both return HTTP 200. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
evolink— OpenAI-compatible chat completions (https://direct.evolink.ai/v1)evolink_anthropic— Anthropic Messages format (https://direct.evolink.ai,anthropic.PlatformDirect)siliconflow/aihubmix_anthropicpatterns)typeenum, default endpoints map, transformer wiring inchannel_llm.go; regenerated ent + GraphQLEvolinkIcon, and en/zh i18n entriesValidation
make generate+go build ./...✅go test ./internal/server/biz/ -run "Channel|Endpoint"✅POST https://direct.evolink.ai/v1/chat/completions(gpt-5.2) → HTTP 200, returnedAxonHub Evolink OKPOST https://direct.evolink.ai/v1/messages(claude-opus-4-8) → HTTP 200, returnedAxonHub Evolink Anthropic OKHappy to open a tracking issue if preferred — followed the convention of #1695 (provider addition without a linked issue).