From e1b7e25f4d16e1bee5a3ca91be868c02a538a7d9 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 1 Aug 2025 17:03:33 -0400 Subject: [PATCH] make top_p configurable --- packages/opencode/src/config/config.ts | 1 + packages/opencode/src/provider/transform.ts | 5 +++ packages/opencode/src/session/index.ts | 1 + packages/opencode/src/session/mode.ts | 4 ++- packages/web/astro.config.mjs | 1 + .../web/src/content/docs/docs/lsp-servers.mdx | 34 ------------------- 6 files changed, 11 insertions(+), 35 deletions(-) delete mode 100644 packages/web/src/content/docs/docs/lsp-servers.mdx diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index acce3b61..b0ba6fa4 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -144,6 +144,7 @@ export namespace Config { .object({ model: z.string().optional(), temperature: z.number().optional(), + top_p: z.number().optional(), prompt: z.string().optional(), tools: z.record(z.string(), z.boolean()).optional(), disable: z.boolean().optional(), diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 844fccbb..13257b18 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -50,4 +50,9 @@ export namespace ProviderTransform { if (modelID.toLowerCase().includes("qwen")) return 0.55 return 0 } + + export function topP(_providerID: string, modelID: string) { + if (modelID.toLowerCase().includes("qwen")) return 1 + return undefined + } } diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 401645fa..d0685dae 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -847,6 +847,7 @@ export namespace Session { temperature: model.info.temperature ? (mode.temperature ?? ProviderTransform.temperature(input.providerID, input.modelID)) : undefined, + topP: mode.topP ?? ProviderTransform.topP(input.providerID, input.modelID), tools: model.info.tool_call === false ? undefined : tools, model: wrapLanguageModel({ model: model.language, diff --git a/packages/opencode/src/session/mode.ts b/packages/opencode/src/session/mode.ts index 65a1f277..baf2ba24 100644 --- a/packages/opencode/src/session/mode.ts +++ b/packages/opencode/src/session/mode.ts @@ -8,6 +8,7 @@ export namespace Mode { .object({ name: z.string(), temperature: z.number().optional(), + topP: z.number().optional(), model: z .object({ modelID: z.string(), @@ -51,7 +52,8 @@ export namespace Mode { item.name = key if (value.model) item.model = Provider.parseModel(value.model) if (value.prompt) item.prompt = value.prompt - if (value.temperature) item.temperature = value.temperature + if (value.temperature != undefined) item.temperature = value.temperature + if (value.top_p != undefined) item.topP = value.top_p if (value.tools) item.tools = { ...value.tools, diff --git a/packages/web/astro.config.mjs b/packages/web/astro.config.mjs index ca5d4795..2a978b28 100644 --- a/packages/web/astro.config.mjs +++ b/packages/web/astro.config.mjs @@ -84,6 +84,7 @@ export default defineConfig({ "docs/permissions", "docs/mcp-servers", "docs/formatters", + "docs/lsp", ], }, ], diff --git a/packages/web/src/content/docs/docs/lsp-servers.mdx b/packages/web/src/content/docs/docs/lsp-servers.mdx deleted file mode 100644 index b409c8be..00000000 --- a/packages/web/src/content/docs/docs/lsp-servers.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: LSP servers ---- - -opencode integrates with _Language Server Protocol_, or LSP to improve how the LLM interacts with your codebase. - -LSP servers for different languages give the LLM: - -- **Diagnostics**: These include things like errors and lint warnings. So the LLM can generate code that has fewer mistakes without having to run the code. -- **Quick actions**: The LSP can allow the LLM to better navigate the codebase through features like _go-to-definition_ and _find references_. - -## Auto-detection - -By default, opencode will **automatically detect** the languages used in your project and add the right LSP servers. - -## Manual configuration - -You can also manually configure LSP servers by adding them under the `lsp` section in your opencode config. - -```json title="opencode.json" -{ - "lsp": { - "go": { - "disabled": false, - "command": "gopls" - }, - "typescript": { - "disabled": false, - "command": "typescript-language-server", - "args": ["--stdio"] - } - } -} -```