From f42a4f75cba620f7390631dd25828729016b6912 Mon Sep 17 00:00:00 2001 From: mogith-pn <143642606+mogith-pn@users.noreply.github.com> Date: Thu, 16 Oct 2025 19:53:00 +0530 Subject: [PATCH] feat: Clarifai Integration as LLM Provider (#11324) --- frontend/__tests__/utils/map-provider.test.ts | 1 + frontend/src/utils/map-provider.ts | 1 + frontend/src/utils/verified-models.ts | 1 + openhands/utils/llm.py | 19 +++++++++++++++++++ 4 files changed, 22 insertions(+) diff --git a/frontend/__tests__/utils/map-provider.test.ts b/frontend/__tests__/utils/map-provider.test.ts index 8f5753a825..e7311c361d 100644 --- a/frontend/__tests__/utils/map-provider.test.ts +++ b/frontend/__tests__/utils/map-provider.test.ts @@ -24,4 +24,5 @@ test("mapProvider", () => { expect(mapProvider("replicate")).toBe("Replicate"); expect(mapProvider("voyage")).toBe("Voyage AI"); expect(mapProvider("openrouter")).toBe("OpenRouter"); + expect(mapProvider("clarifai")).toBe("Clarifai"); }); diff --git a/frontend/src/utils/map-provider.ts b/frontend/src/utils/map-provider.ts index 02a66bcfd7..6da6619f4c 100644 --- a/frontend/src/utils/map-provider.ts +++ b/frontend/src/utils/map-provider.ts @@ -25,6 +25,7 @@ export const MAP_PROVIDER = { openrouter: "OpenRouter", openhands: "OpenHands", lemonade: "Lemonade", + clarifai: "Clarifai", }; export const mapProvider = (provider: string) => diff --git a/frontend/src/utils/verified-models.ts b/frontend/src/utils/verified-models.ts index d04333d2d7..173619cb33 100644 --- a/frontend/src/utils/verified-models.ts +++ b/frontend/src/utils/verified-models.ts @@ -5,6 +5,7 @@ export const VERIFIED_PROVIDERS = [ "openai", "mistral", "lemonade", + "clarifai", ]; export const VERIFIED_MODELS = [ "o3-mini-2025-01-31", diff --git a/openhands/utils/llm.py b/openhands/utils/llm.py index d65acb1f7b..9eeb7c5393 100644 --- a/openhands/utils/llm.py +++ b/openhands/utils/llm.py @@ -71,4 +71,23 @@ def get_supported_llm_models(config: OpenHandsConfig) -> list[str]: ] model_list = openhands_models + model_list + # Add Clarifai provider models (via OpenAI-compatible endpoint) + clarifai_models = [ + # clarifai featured models + 'clarifai/openai.chat-completion.gpt-oss-120b', + 'clarifai/openai.chat-completion.gpt-oss-20b', + 'clarifai/openai.chat-completion.gpt-5', + 'clarifai/openai.chat-completion.gpt-5-mini', + 'clarifai/qwen.qwen3.qwen3-next-80B-A3B-Thinking', + 'clarifai/qwen.qwenLM.Qwen3-30B-A3B-Instruct-2507', + 'clarifai/qwen.qwenLM.Qwen3-30B-A3B-Thinking-2507', + 'clarifai/qwen.qwenLM.Qwen3-14B', + 'clarifai/qwen.qwenCoder.Qwen3-Coder-30B-A3B-Instruct', + 'clarifai/deepseek-ai.deepseek-chat.DeepSeek-R1-0528-Qwen3-8B', + 'clarifai/deepseek-ai.deepseek-chat.DeepSeek-V3_1', + 'clarifai/zai.completion.GLM_4_5', + 'clarifai/moonshotai.kimi.Kimi-K2-Instruct', + ] + model_list = clarifai_models + model_list + return list(sorted(set(model_list)))