nvms / wingman

Your pair programming wingman. Supports OpenAI, Anthropic, or any LLM on your local inference server.
https://marketplace.visualstudio.com/items?itemName=nvms.ai-wingman
ISC License
61 stars 10 forks source link

Add Claudev3 model support #39

Open fredxfred opened 4 months ago

fredxfred commented 4 months ago

Claude v3 models require using Anthropic's new API: https://docs.anthropic.com/claude/reference/messages_post

It uses the same API keys as Anthropic's now-legacy APIs, but is implemented sufficiently differently to introduce breaking changes and require a new client implementation within Wingman. I left the legacy Anthropic API named simply "Anthropic" with the new one "ClaudeV3".

Since I have been having trouble modifying the Svelte, I am leaving one annoyance there unfixed, that being an assumption of a 1:1 correspondence between Providers and API keys makes it so adding a new provider automatically adds a new place to add API keys. This is kind of confusing because Anthropic's legacy and v3 models share API keys

claudeapisnap

To work around this, I had the ClaudeV3 API fall back to an Anthropic API key if we fail to read an explicitly-set ClaudeV3 key but an Anthropic key is present.

I am pretty inexperienced developing VScode extensions or frontend code in general, so I appreciate your patience and guidance in (hopefully!) getting this merged and released.