44 lines
1.8 KiB
Lua
44 lines
1.8 KiB
Lua
return {
|
|
'frankroeder/parrot.nvim',
|
|
version = '2.3.0',
|
|
dependencies = { 'ibhagwan/fzf-lua', 'nvim-lua/plenary.nvim' },
|
|
opts = {
|
|
providers = {
|
|
anthropic = {
|
|
name = 'anthropic',
|
|
endpoint = 'https://api.anthropic.com/v1/messages',
|
|
model_endpoint = 'https://api.anthropic.com/v1/models',
|
|
api_key = { '/usr/local/bin/sops', "--config", "/dev/null", "-d", vim.fn.expand("$HOME") .. "/.claude-api" },
|
|
headers = function(self)
|
|
return {
|
|
['Content-Type'] = "application/json",
|
|
['x-api-key'] = self.api_key,
|
|
['anthropic-version'] = "2023-06-01",
|
|
}
|
|
end,
|
|
params = {
|
|
chat = { max_tokens = 4096 },
|
|
command = { max_tokens = 4096 },
|
|
},
|
|
models = {
|
|
'claude-opus-4-1-20250805',
|
|
'claude-sonnet-4-5-20250929',
|
|
},
|
|
preprocess_payload = function(payload)
|
|
for _, message in ipairs(payload.messages) do
|
|
message.content = message.content:gsub('^%s*(.-)%s*$', "%1")
|
|
end
|
|
if payload.messages[1] and payload.messages[1].role == 'system' then
|
|
-- remove the first message that serves as the system prompt as anthropic
|
|
-- expects the system prompt to be part of the API call body and not the messages
|
|
payload.system = payload.messages[1].content
|
|
table.remove(payload.messages, 1)
|
|
end
|
|
return payload
|
|
end,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|