feat: specific provider for auto-suggestions (#569)
This commit is contained in:
		
							parent
							
								
									8184275770
								
							
						
					
					
						commit
						0642905c80
					
				| @ -192,6 +192,7 @@ _See [config.lua#L9](./lua/avante/config.lua) for the full config_ | |||||||
| { | { | ||||||
|   ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | string |   ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | string | ||||||
|   provider = "claude", -- Recommend using Claude |   provider = "claude", -- Recommend using Claude | ||||||
|  |   auto_suggestions_provider = "claude", -- Since auto-suggestions are a high-frequency operation and therefore expensive, it is recommended to specify an inexpensive provider or even a free provider: copilot | ||||||
|   claude = { |   claude = { | ||||||
|     endpoint = "https://api.anthropic.com", |     endpoint = "https://api.anthropic.com", | ||||||
|     model = "claude-3-5-sonnet-20240620", |     model = "claude-3-5-sonnet-20240620", | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ M.defaults = { | |||||||
|   debug = false, |   debug = false, | ||||||
|   ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | [string] |   ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | [string] | ||||||
|   provider = "claude", -- Only recommend using Claude |   provider = "claude", -- Only recommend using Claude | ||||||
|  |   auto_suggestions_provider = "claude", | ||||||
|   ---@alias Tokenizer "tiktoken" | "hf" |   ---@alias Tokenizer "tiktoken" | "hf" | ||||||
|   -- Used for counting tokens and encoding text. |   -- Used for counting tokens and encoding text. | ||||||
|   -- By default, we will use tiktoken. |   -- By default, we will use tiktoken. | ||||||
|  | |||||||
| @ -33,6 +33,7 @@ local group = api.nvim_create_augroup("avante_llm", { clear = true }) | |||||||
| ---@field bufnr integer | ---@field bufnr integer | ||||||
| ---@field instructions string | ---@field instructions string | ||||||
| ---@field mode LlmMode | ---@field mode LlmMode | ||||||
|  | ---@field provider AvanteProviderFunctor | nil | ||||||
| ---@field on_chunk AvanteChunkParser | ---@field on_chunk AvanteChunkParser | ||||||
| ---@field on_complete AvanteCompleteParser | ---@field on_complete AvanteCompleteParser | ||||||
| 
 | 
 | ||||||
| @ -40,7 +41,7 @@ local group = api.nvim_create_augroup("avante_llm", { clear = true }) | |||||||
| M.stream = function(opts) | M.stream = function(opts) | ||||||
|   local mode = opts.mode or "planning" |   local mode = opts.mode or "planning" | ||||||
|   ---@type AvanteProviderFunctor |   ---@type AvanteProviderFunctor | ||||||
|   local Provider = P[Config.provider] |   local Provider = opts.provider or P[Config.provider] | ||||||
| 
 | 
 | ||||||
|   -- Check if the instructions contains an image path |   -- Check if the instructions contains an image path | ||||||
|   local image_paths = {} |   local image_paths = {} | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ local Utils = require("avante.utils") | |||||||
| local Llm = require("avante.llm") | local Llm = require("avante.llm") | ||||||
| local Highlights = require("avante.highlights") | local Highlights = require("avante.highlights") | ||||||
| local Config = require("avante.config") | local Config = require("avante.config") | ||||||
| local Provider = require("avante.providers") | local Providers = require("avante.providers") | ||||||
| local api = vim.api | local api = vim.api | ||||||
| local fn = vim.fn | local fn = vim.fn | ||||||
| 
 | 
 | ||||||
| @ -37,7 +37,7 @@ function Suggestion:new(id) | |||||||
|   instance._contexts = {} |   instance._contexts = {} | ||||||
|   if Config.behaviour.auto_suggestions then |   if Config.behaviour.auto_suggestions then | ||||||
|     if not vim.g.avante_login or vim.g.avante_login == false then |     if not vim.g.avante_login or vim.g.avante_login == false then | ||||||
|       api.nvim_exec_autocmds("User", { pattern = Provider.env.REQUEST_LOGIN_PATTERN }) |       api.nvim_exec_autocmds("User", { pattern = Providers.env.REQUEST_LOGIN_PATTERN }) | ||||||
|       vim.g.avante_login = true |       vim.g.avante_login = true | ||||||
|     end |     end | ||||||
|     instance:setup_autocmds() |     instance:setup_autocmds() | ||||||
| @ -65,7 +65,10 @@ function Suggestion:suggest() | |||||||
| 
 | 
 | ||||||
|   local full_response = "" |   local full_response = "" | ||||||
| 
 | 
 | ||||||
|  |   local provider = Providers[Config.auto_suggestions_provider] | ||||||
|  | 
 | ||||||
|   Llm.stream({ |   Llm.stream({ | ||||||
|  |     provider = provider, | ||||||
|     bufnr = bufnr, |     bufnr = bufnr, | ||||||
|     ask = true, |     ask = true, | ||||||
|     file_content = code_content, |     file_content = code_content, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 yetone
						yetone