Skip to content

Commit 1225fe8

Browse files
authored
feat(copilot): optimize copilot quota usage for tool calling
* update: new function in copilot provider for agent initiator * refactor: remove initiator into prepare_input function
1 parent 07dcc18 commit 1225fe8

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

lua/CopilotChat/client.lua

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,14 @@ function Client:ask(opts)
511511
end
512512

513513
local headers = self:authenticate(provider_name)
514-
local request = provider.prepare_input(generate_ask_request(opts.system_prompt, history, generated_messages), options)
514+
515+
local request, extra_headers =
516+
provider.prepare_input(generate_ask_request(opts.system_prompt, history, generated_messages), options)
517+
518+
if extra_headers then
519+
headers = vim.tbl_extend('force', headers, extra_headers)
520+
end
521+
515522
local is_stream = request.stream
516523

517524
local args = {

lua/CopilotChat/config/providers.lua

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,10 +641,21 @@ M.copilot = {
641641
end,
642642

643643
prepare_input = function(inputs, opts)
644+
local request
644645
if opts.model.use_responses then
645-
return prepare_responses_input(inputs, opts)
646+
request = prepare_responses_input(inputs, opts)
647+
else
648+
request = prepare_chat_input(inputs, opts)
646649
end
647-
return prepare_chat_input(inputs, opts)
650+
651+
if inputs and #inputs > 0 then
652+
local last_msg = inputs[#inputs]
653+
if last_msg.role == constants.ROLE.TOOL then
654+
return request, { ['x-initiator'] = 'agent' }
655+
end
656+
end
657+
658+
return request
648659
end,
649660

650661
prepare_output = function(output, opts)

0 commit comments

Comments
 (0)