mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 07:47:39 +00:00
refactor(commands): share vllm setup
This commit is contained in:
@@ -1,16 +1,6 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ApplyAuthChoiceParams, ApplyAuthChoiceResult } from "./auth-choice.apply.js";
|
||||
import { upsertAuthProfileWithLock } from "../agents/auth-profiles.js";
|
||||
|
||||
const VLLM_DEFAULT_BASE_URL = "http://127.0.0.1:8000/v1";
|
||||
const VLLM_DEFAULT_CONTEXT_WINDOW = 128000;
|
||||
const VLLM_DEFAULT_MAX_TOKENS = 8192;
|
||||
const VLLM_DEFAULT_COST = {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
};
|
||||
import { promptAndConfigureVllm } from "./vllm-setup.js";
|
||||
|
||||
function applyVllmDefaultModel(cfg: OpenClawConfig, modelRef: string): OpenClawConfig {
|
||||
const existingModel = cfg.agents?.defaults?.model;
|
||||
@@ -41,63 +31,12 @@ export async function applyAuthChoiceVllm(
|
||||
return null;
|
||||
}
|
||||
|
||||
const baseUrlRaw = await params.prompter.text({
|
||||
message: "vLLM base URL",
|
||||
initialValue: VLLM_DEFAULT_BASE_URL,
|
||||
placeholder: VLLM_DEFAULT_BASE_URL,
|
||||
validate: (value) => (value?.trim() ? undefined : "Required"),
|
||||
});
|
||||
const apiKeyRaw = await params.prompter.text({
|
||||
message: "vLLM API key",
|
||||
placeholder: "sk-... (or any non-empty string)",
|
||||
validate: (value) => (value?.trim() ? undefined : "Required"),
|
||||
});
|
||||
const modelIdRaw = await params.prompter.text({
|
||||
message: "vLLM model",
|
||||
placeholder: "meta-llama/Meta-Llama-3-8B-Instruct",
|
||||
validate: (value) => (value?.trim() ? undefined : "Required"),
|
||||
});
|
||||
|
||||
const baseUrl = String(baseUrlRaw ?? "")
|
||||
.trim()
|
||||
.replace(/\/+$/, "");
|
||||
const apiKey = String(apiKeyRaw ?? "").trim();
|
||||
const modelId = String(modelIdRaw ?? "").trim();
|
||||
const modelRef = `vllm/${modelId}`;
|
||||
|
||||
await upsertAuthProfileWithLock({
|
||||
profileId: "vllm:default",
|
||||
credential: { type: "api_key", provider: "vllm", key: apiKey },
|
||||
const { config: nextConfig, modelRef } = await promptAndConfigureVllm({
|
||||
cfg: params.config,
|
||||
prompter: params.prompter,
|
||||
agentDir: params.agentDir,
|
||||
});
|
||||
|
||||
const nextConfig: OpenClawConfig = {
|
||||
...params.config,
|
||||
models: {
|
||||
...params.config.models,
|
||||
mode: params.config.models?.mode ?? "merge",
|
||||
providers: {
|
||||
...params.config.models?.providers,
|
||||
vllm: {
|
||||
baseUrl,
|
||||
api: "openai-completions",
|
||||
apiKey: "VLLM_API_KEY",
|
||||
models: [
|
||||
{
|
||||
id: modelId,
|
||||
name: modelId,
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
cost: VLLM_DEFAULT_COST,
|
||||
contextWindow: VLLM_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: VLLM_DEFAULT_MAX_TOKENS,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
if (!params.setDefaultModel) {
|
||||
return { config: nextConfig, agentModelOverride: modelRef };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user