mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-10-04 16:02:13 +00:00
fix: Default model selection (#533)
* fix: Default model selection * cr
This commit is contained in:
parent
f61ea79b13
commit
3ec90ef6e6
25 changed files with 110 additions and 107 deletions
|
|
@ -15,7 +15,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../../utils/load-model.js";
|
} from "../../../../utils/llms/index.js";
|
||||||
import { Command, END } from "@langchain/langgraph";
|
import { Command, END } from "@langchain/langgraph";
|
||||||
import { getMessageContentString } from "@open-swe/shared/messages";
|
import { getMessageContentString } from "@open-swe/shared/messages";
|
||||||
import {
|
import {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { getMessageString } from "../../../utils/message/content.js";
|
import { getMessageString } from "../../../utils/message/content.js";
|
||||||
|
|
||||||
export async function createIssueFieldsFromMessages(
|
export async function createIssueFieldsFromMessages(
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { getMissingMessages } from "../../../utils/github/issue-messages.js";
|
import { getMissingMessages } from "../../../utils/github/issue-messages.js";
|
||||||
import { getMessageString } from "../../../utils/message/content.js";
|
import { getMessageString } from "../../../utils/message/content.js";
|
||||||
import { isHumanMessage } from "@langchain/core/messages";
|
import { isHumanMessage } from "@langchain/core/messages";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../../utils/load-model.js";
|
} from "../../../../utils/llms/index.js";
|
||||||
import {
|
import {
|
||||||
createGetURLContentTool,
|
createGetURLContentTool,
|
||||||
createShellTool,
|
createShellTool,
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../../utils/load-model.js";
|
} from "../../../../utils/llms/index.js";
|
||||||
import {
|
import {
|
||||||
PlannerGraphState,
|
PlannerGraphState,
|
||||||
PlannerGraphUpdate,
|
PlannerGraphUpdate,
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { getMessageString } from "../../../utils/message/content.js";
|
import { getMessageString } from "../../../utils/message/content.js";
|
||||||
import { formatUserRequestPrompt } from "../../../utils/user-request.js";
|
import { formatUserRequestPrompt } from "../../../utils/user-request.js";
|
||||||
import { formatCustomRulesPrompt } from "../../../utils/custom-rules.js";
|
import { formatCustomRulesPrompt } from "../../../utils/custom-rules.js";
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { FallbackRunnable } from "../../../utils/runtime-fallback.js";
|
import { FallbackRunnable } from "../../../utils/runtime-fallback.js";
|
||||||
|
|
||||||
const systemPromptIdentifyChanges = `You are operating as an agentic coding assistant built by LangChain. You've previously been given a task to generate a plan of action for, to address the user's initial request.
|
const systemPromptIdentifyChanges = `You are operating as an agentic coding assistant built by LangChain. You've previously been given a task to generate a plan of action for, to address the user's initial request.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { createLogger, LogLevel } from "../../../utils/logger.js";
|
import { createLogger, LogLevel } from "../../../utils/logger.js";
|
||||||
import {
|
import {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import {
|
||||||
GraphUpdate,
|
GraphUpdate,
|
||||||
PlanItem,
|
PlanItem,
|
||||||
} from "@open-swe/shared/open-swe/types";
|
} from "@open-swe/shared/open-swe/types";
|
||||||
import { loadModel, Task } from "../../../utils/load-model.js";
|
import { loadModel, Task } from "../../../utils/llms/index.js";
|
||||||
import { getMessageContentString } from "@open-swe/shared/messages";
|
import { getMessageContentString } from "@open-swe/shared/messages";
|
||||||
import { getMessageString } from "../../../utils/message/content.js";
|
import { getMessageString } from "../../../utils/message/content.js";
|
||||||
import { createLogger, LogLevel } from "../../../utils/logger.js";
|
import { createLogger, LogLevel } from "../../../utils/logger.js";
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../../utils/load-model.js";
|
} from "../../../../utils/llms/index.js";
|
||||||
import {
|
import {
|
||||||
createShellTool,
|
createShellTool,
|
||||||
createApplyPatchTool,
|
createApplyPatchTool,
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { formatPlanPromptWithSummaries } from "../../../utils/plan-prompt.js";
|
import { formatPlanPromptWithSummaries } from "../../../utils/plan-prompt.js";
|
||||||
import { formatUserRequestPrompt } from "../../../utils/user-request.js";
|
import { formatUserRequestPrompt } from "../../../utils/user-request.js";
|
||||||
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {
|
||||||
GraphUpdate,
|
GraphUpdate,
|
||||||
PlanItem,
|
PlanItem,
|
||||||
} from "@open-swe/shared/open-swe/types";
|
} from "@open-swe/shared/open-swe/types";
|
||||||
import { loadModel, Task } from "../../../utils/load-model.js";
|
import { loadModel, Task } from "../../../utils/llms/index.js";
|
||||||
import {
|
import {
|
||||||
AIMessage,
|
AIMessage,
|
||||||
BaseMessage,
|
BaseMessage,
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import {
|
import {
|
||||||
getActiveTask,
|
getActiveTask,
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../utils/load-model.js";
|
} from "../../../utils/llms/index.js";
|
||||||
import { GraphConfig, PlanItem } from "@open-swe/shared/open-swe/types";
|
import { GraphConfig, PlanItem } from "@open-swe/shared/open-swe/types";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { addTaskPlanToIssue } from "../../../utils/github/issue-task.js";
|
import { addTaskPlanToIssue } from "../../../utils/github/issue-task.js";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../../../utils/load-model.js";
|
} from "../../../../utils/llms/index.js";
|
||||||
import {
|
import {
|
||||||
ReviewerGraphState,
|
ReviewerGraphState,
|
||||||
ReviewerGraphUpdate,
|
ReviewerGraphUpdate,
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import {
|
||||||
loadModel,
|
loadModel,
|
||||||
supportsParallelToolCallsParam,
|
supportsParallelToolCallsParam,
|
||||||
Task,
|
Task,
|
||||||
} from "../../utils/load-model.js";
|
} from "../../utils/llms/index.js";
|
||||||
import { trackCachePerformance } from "../../utils/caching.js";
|
import { trackCachePerformance } from "../../utils/caching.js";
|
||||||
|
|
||||||
const logger = createLogger(LogLevel.INFO, "SharedDiagnoseError");
|
const logger = createLogger(LogLevel.INFO, "SharedDiagnoseError");
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { tool } from "@langchain/core/tools";
|
||||||
import { createLogger, LogLevel } from "../../utils/logger.js";
|
import { createLogger, LogLevel } from "../../utils/logger.js";
|
||||||
import { createSearchDocumentForToolFields } from "@open-swe/shared/open-swe/tools";
|
import { createSearchDocumentForToolFields } from "@open-swe/shared/open-swe/tools";
|
||||||
import { FireCrawlLoader } from "@langchain/community/document_loaders/web/firecrawl";
|
import { FireCrawlLoader } from "@langchain/community/document_loaders/web/firecrawl";
|
||||||
import { loadModel, Task } from "../../utils/load-model.js";
|
import { loadModel, Task } from "../../utils/llms/index.js";
|
||||||
import { GraphConfig, GraphState } from "@open-swe/shared/open-swe/types";
|
import { GraphConfig, GraphState } from "@open-swe/shared/open-swe/types";
|
||||||
import { getMessageContentString } from "@open-swe/shared/messages";
|
import { getMessageContentString } from "@open-swe/shared/messages";
|
||||||
import { DOCUMENT_SEARCH_PROMPT } from "./prompt.js";
|
import { DOCUMENT_SEARCH_PROMPT } from "./prompt.js";
|
||||||
|
|
|
||||||
33
apps/open-swe/src/utils/llms/constants.ts
Normal file
33
apps/open-swe/src/utils/llms/constants.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
export enum Task {
|
||||||
|
/**
|
||||||
|
* Used for programmer tasks. This includes: writing code,
|
||||||
|
* generating plans, taking context gathering actions, etc.
|
||||||
|
*/
|
||||||
|
PROGRAMMER = "programmer",
|
||||||
|
/**
|
||||||
|
* Used for routing tasks. This includes: initial request
|
||||||
|
* routing to different agents.
|
||||||
|
*/
|
||||||
|
ROUTER = "router",
|
||||||
|
/**
|
||||||
|
* Used for summarizing tasks. This includes: summarizing
|
||||||
|
* the conversation history, summarizing actions taken during
|
||||||
|
* a task execution, etc. Should be a slightly advanced model.
|
||||||
|
*/
|
||||||
|
SUMMARIZER = "summarizer",
|
||||||
|
}
|
||||||
|
|
||||||
|
export const TASK_TO_CONFIG_DEFAULTS_MAP = {
|
||||||
|
[Task.PROGRAMMER]: {
|
||||||
|
modelName: "anthropic:claude-sonnet-4-0",
|
||||||
|
temperature: 0,
|
||||||
|
},
|
||||||
|
[Task.ROUTER]: {
|
||||||
|
modelName: "anthropic:claude-3-5-haiku-latest",
|
||||||
|
temperature: 0,
|
||||||
|
},
|
||||||
|
[Task.SUMMARIZER]: {
|
||||||
|
modelName: "openai:gpt-4.1-mini",
|
||||||
|
temperature: 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
2
apps/open-swe/src/utils/llms/index.ts
Normal file
2
apps/open-swe/src/utils/llms/index.ts
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
export * from "./load-model.js";
|
||||||
|
export * from "./constants.js";
|
||||||
28
apps/open-swe/src/utils/llms/load-model.ts
Normal file
28
apps/open-swe/src/utils/llms/load-model.ts
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
||||||
|
import { getModelManager } from "./model-manager.js";
|
||||||
|
import { FallbackRunnable } from "../runtime-fallback.js";
|
||||||
|
import { Task, TASK_TO_CONFIG_DEFAULTS_MAP } from "./constants.js";
|
||||||
|
|
||||||
|
export async function loadModel(config: GraphConfig, task: Task) {
|
||||||
|
const modelManager = getModelManager();
|
||||||
|
|
||||||
|
const model = await modelManager.loadModel(config, task);
|
||||||
|
if (!model) {
|
||||||
|
throw new Error(`Model loading returned undefined for task: ${task}`);
|
||||||
|
}
|
||||||
|
const fallbackModel = new FallbackRunnable(model, config, task, modelManager);
|
||||||
|
return fallbackModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
const MODELS_NO_PARALLEL_TOOL_CALLING = ["openai:o3", "openai:o3-mini"];
|
||||||
|
|
||||||
|
export function supportsParallelToolCallsParam(
|
||||||
|
config: GraphConfig,
|
||||||
|
task: Task,
|
||||||
|
): boolean {
|
||||||
|
const modelStr =
|
||||||
|
config.configurable?.[`${task}ModelName`] ??
|
||||||
|
TASK_TO_CONFIG_DEFAULTS_MAP[task].modelName;
|
||||||
|
|
||||||
|
return !MODELS_NO_PARALLEL_TOOL_CALLING.some((model) => modelStr === model);
|
||||||
|
}
|
||||||
|
|
@ -3,10 +3,11 @@ import {
|
||||||
initChatModel,
|
initChatModel,
|
||||||
} from "langchain/chat_models/universal";
|
} from "langchain/chat_models/universal";
|
||||||
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
||||||
import { createLogger, LogLevel } from "./logger.js";
|
import { createLogger, LogLevel } from "../logger.js";
|
||||||
import { Task } from "./load-model.js";
|
import { Task } from "./constants.js";
|
||||||
import { isAllowedUser } from "@open-swe/shared/github/allowed-users";
|
import { isAllowedUser } from "@open-swe/shared/github/allowed-users";
|
||||||
import { decryptSecret } from "@open-swe/shared/crypto";
|
import { decryptSecret } from "@open-swe/shared/crypto";
|
||||||
|
import { TASK_TO_CONFIG_DEFAULTS_MAP } from "./constants.js";
|
||||||
|
|
||||||
const logger = createLogger(LogLevel.INFO, "ModelManager");
|
const logger = createLogger(LogLevel.INFO, "ModelManager");
|
||||||
|
|
||||||
|
|
@ -242,19 +243,19 @@ export class ModelManager {
|
||||||
[Task.PROGRAMMER]: {
|
[Task.PROGRAMMER]: {
|
||||||
modelName:
|
modelName:
|
||||||
config.configurable?.[`${task}ModelName`] ??
|
config.configurable?.[`${task}ModelName`] ??
|
||||||
"anthropic:claude-sonnet-4-0",
|
TASK_TO_CONFIG_DEFAULTS_MAP[task].modelName,
|
||||||
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
||||||
},
|
},
|
||||||
[Task.ROUTER]: {
|
[Task.ROUTER]: {
|
||||||
modelName:
|
modelName:
|
||||||
config.configurable?.[`${task}ModelName`] ??
|
config.configurable?.[`${task}ModelName`] ??
|
||||||
"anthropic:claude-3-5-haiku-latest",
|
TASK_TO_CONFIG_DEFAULTS_MAP[task].modelName,
|
||||||
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
||||||
},
|
},
|
||||||
[Task.SUMMARIZER]: {
|
[Task.SUMMARIZER]: {
|
||||||
modelName:
|
modelName:
|
||||||
config.configurable?.[`${task}ModelName`] ??
|
config.configurable?.[`${task}ModelName`] ??
|
||||||
"google-genai:gemini-2.5-pro",
|
TASK_TO_CONFIG_DEFAULTS_MAP[task].modelName,
|
||||||
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
temperature: config.configurable?.[`${task}Temperature`] ?? 0,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -307,7 +308,7 @@ export class ModelManager {
|
||||||
openai: {
|
openai: {
|
||||||
[Task.PROGRAMMER]: "gpt-4o",
|
[Task.PROGRAMMER]: "gpt-4o",
|
||||||
[Task.ROUTER]: "gpt-4o-mini",
|
[Task.ROUTER]: "gpt-4o-mini",
|
||||||
[Task.SUMMARIZER]: "gpt-4o",
|
[Task.SUMMARIZER]: "gpt-4.1-mini",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
|
||||||
import { getModelManager } from "./model-manager.js";
|
|
||||||
import { FallbackRunnable } from "./runtime-fallback.js";
|
|
||||||
|
|
||||||
export enum Task {
|
|
||||||
/**
|
|
||||||
* Used for programmer tasks. This includes: writing code,
|
|
||||||
* generating plans, taking context gathering actions, etc.
|
|
||||||
*/
|
|
||||||
PROGRAMMER = "programmer",
|
|
||||||
/**
|
|
||||||
* Used for routing tasks. This includes: initial request
|
|
||||||
* routing to different agents.
|
|
||||||
*/
|
|
||||||
ROUTER = "router",
|
|
||||||
/**
|
|
||||||
* Used for summarizing tasks. This includes: summarizing
|
|
||||||
* the conversation history, summarizing actions taken during
|
|
||||||
* a task execution, etc. Should be a slightly advanced model.
|
|
||||||
*/
|
|
||||||
SUMMARIZER = "summarizer",
|
|
||||||
}
|
|
||||||
|
|
||||||
const TASK_TO_CONFIG_DEFAULTS_MAP = {
|
|
||||||
[Task.PROGRAMMER]: {
|
|
||||||
modelName: "anthropic:claude-sonnet-4-0",
|
|
||||||
temperature: 0,
|
|
||||||
},
|
|
||||||
[Task.ROUTER]: {
|
|
||||||
modelName: "anthropic:claude-3-5-haiku-latest",
|
|
||||||
temperature: 0,
|
|
||||||
},
|
|
||||||
[Task.SUMMARIZER]: {
|
|
||||||
modelName: "openai:gpt-4.1-mini",
|
|
||||||
temperature: 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export async function loadModel(config: GraphConfig, task: Task) {
|
|
||||||
const modelManager = getModelManager();
|
|
||||||
|
|
||||||
const model = await modelManager.loadModel(config, task);
|
|
||||||
if (!model) {
|
|
||||||
throw new Error(`Model loading returned undefined for task: ${task}`);
|
|
||||||
}
|
|
||||||
const fallbackModel = new FallbackRunnable(model, config, task, modelManager);
|
|
||||||
return fallbackModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
const MODELS_NO_PARALLEL_TOOL_CALLING = ["openai:o3", "openai:o3-mini"];
|
|
||||||
|
|
||||||
export function supportsParallelToolCallsParam(
|
|
||||||
config: GraphConfig,
|
|
||||||
task: Task,
|
|
||||||
): boolean {
|
|
||||||
const modelStr =
|
|
||||||
config.configurable?.[`${task}ModelName`] ??
|
|
||||||
TASK_TO_CONFIG_DEFAULTS_MAP[task].modelName;
|
|
||||||
|
|
||||||
return !MODELS_NO_PARALLEL_TOOL_CALLING.some((model) => modelStr === model);
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
||||||
import { loadModel, Task } from "../load-model.js";
|
import { loadModel, Task } from "../llms/index.js";
|
||||||
import { createLogger, LogLevel } from "../logger.js";
|
import { createLogger, LogLevel } from "../logger.js";
|
||||||
import { DOCUMENT_TOC_GENERATION_PROMPT } from "./prompt.js";
|
import { DOCUMENT_TOC_GENERATION_PROMPT } from "./prompt.js";
|
||||||
import { getMessageContentString } from "@open-swe/shared/messages";
|
import { getMessageContentString } from "@open-swe/shared/messages";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
import { GraphConfig } from "@open-swe/shared/open-swe/types";
|
||||||
import { Task } from "./load-model.js";
|
import { Task } from "./llms/index.js";
|
||||||
import { ModelManager } from "./model-manager.js";
|
import { ModelManager } from "./llms/model-manager.js";
|
||||||
import { createLogger, LogLevel } from "./logger.js";
|
import { createLogger, LogLevel } from "./logger.js";
|
||||||
import { Runnable, RunnableConfig } from "@langchain/core/runnables";
|
import { Runnable, RunnableConfig } from "@langchain/core/runnables";
|
||||||
import { StructuredToolInterface } from "@langchain/core/tools";
|
import { StructuredToolInterface } from "@langchain/core/tools";
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
export const MODEL_OPTIONS = [
|
export const MODEL_OPTIONS = [
|
||||||
// {
|
{
|
||||||
// label: "Claude Sonnet 4 (Extended Thinking)",
|
label: "Claude Sonnet 4 (Extended Thinking)",
|
||||||
// value: "anthropic:extended-thinking:claude-sonnet-4-0",
|
value: "anthropic:extended-thinking:claude-sonnet-4-0",
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// label: "Claude Opus 4 (Extended Thinking)",
|
label: "Claude Opus 4 (Extended Thinking)",
|
||||||
// value: "anthropic:extended-thinking:claude-opus-4-0",
|
value: "anthropic:extended-thinking:claude-opus-4-0",
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
label: "Claude Sonnet 4",
|
label: "Claude Sonnet 4",
|
||||||
value: "anthropic:claude-sonnet-4-0",
|
value: "anthropic:claude-sonnet-4-0",
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// label: "Claude Opus 4",
|
label: "Claude Opus 4",
|
||||||
// value: "anthropic:claude-opus-4-0",
|
value: "anthropic:claude-opus-4-0",
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
label: "Claude 3.7 Sonnet",
|
label: "Claude 3.7 Sonnet",
|
||||||
value: "anthropic:claude-3-7-sonnet-latest",
|
value: "anthropic:claude-3-7-sonnet-latest",
|
||||||
|
|
@ -27,10 +27,10 @@ export const MODEL_OPTIONS = [
|
||||||
label: "Claude 3.5 Haiku",
|
label: "Claude 3.5 Haiku",
|
||||||
value: "anthropic:claude-3-5-haiku-latest",
|
value: "anthropic:claude-3-5-haiku-latest",
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// label: "o4",
|
label: "o4",
|
||||||
// value: "openai:o4",
|
value: "openai:o4",
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
label: "o4 mini",
|
label: "o4 mini",
|
||||||
value: "openai:o4-mini",
|
value: "openai:o4-mini",
|
||||||
|
|
@ -60,12 +60,12 @@ export const MODEL_OPTIONS = [
|
||||||
value: "openai:gpt-4.1-mini",
|
value: "openai:gpt-4.1-mini",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Gemini 2.5 Pro Preview",
|
label: "Gemini 2.5 Pro",
|
||||||
value: "google-genai:gemini-2.5-pro-preview-05-06",
|
value: "google-genai:gemini-2.5-pro",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Gemini 2.5 Flash Preview",
|
label: "Gemini 2.5 Flash",
|
||||||
value: "google-genai:gemini-2.5-flash-preview-05-20",
|
value: "google-genai:gemini-2.5-flash",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue