From c694772d68f863c3977813cee48d2bed9a890aab Mon Sep 17 00:00:00 2001 From: Daniel Nyong <57610029+Dan6200@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:55:53 +0100 Subject: [PATCH] fix: vertex gemini --- lua/avante/config.lua | 9 ++++++--- lua/avante/providers/vertex.lua | 25 ++++++++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lua/avante/config.lua b/lua/avante/config.lua index d644106..0f944fc 100644 --- a/lua/avante/config.lua +++ b/lua/avante/config.lua @@ -312,12 +312,15 @@ M._defaults = { }, ---@type AvanteSupportedProvider vertex = { - endpoint = "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models", + endpoint = "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models", model = "gemini-1.5-flash-002", timeout = 30000, -- Timeout in milliseconds + context_window = 1048576, + use_ReAct_prompt = true, extra_request_body = { - temperature = 0.75, - max_tokens = 20480, + generationConfig = { + temperature = 0.75, + }, }, }, ---@type AvanteSupportedProvider diff --git a/lua/avante/providers/vertex.lua b/lua/avante/providers/vertex.lua index 44d48df..b69794c 100644 --- a/lua/avante/providers/vertex.lua +++ b/lua/avante/providers/vertex.lua @@ -25,24 +25,35 @@ local function execute_command(command) return result:match("^%s*(.-)%s*$") end -function M.parse_api_key() - if not M.api_key_name:match("^cmd:") then - error("Invalid api_key_name: Expected 'cmd:' format, got '" .. M.api_key_name .. "'") +local function parse_cmd(cmd_input, error_msg) + if not cmd_input:match("^cmd:") then + if not error_msg then + error("Invalid cmd: Expected 'cmd:' format, got '" .. cmd_input .. "'") + else + error(error_msg) + end end - local command = M.api_key_name:sub(5) + local command = cmd_input:sub(5) local direct_output = execute_command(command) return direct_output end +function M.parse_api_key() + return parse_cmd( + M.api_key_name, + "Invalid api_key_name: Expected 'cmd:' format, got '" .. M.api_key_name .. "'" + ) +end + function M:parse_curl_args(prompt_opts) local provider_conf, request_body = P.parse_config(self) - local location = vim.fn.getenv("LOCATION") - local project_id = vim.fn.getenv("PROJECT_ID") local model_id = provider_conf.model or "default-model-id" + local project_id = parse_cmd("cmd:gcloud config get-value project") + local location = vim.fn.getenv("GOOGLE_CLOUD_LOCATION") -- same as gemini-cli - if location == nil or location == vim.NIL then location = "default-location" end if project_id == nil or project_id == vim.NIL then project_id = "default-project-id" end + if location == nil or location == vim.NIL then location = "global" end local url = provider_conf.endpoint:gsub("LOCATION", location):gsub("PROJECT_ID", project_id) url = string.format("%s/%s:streamGenerateContent?alt=sse", url, model_id)