|
29 | 29 | import pynvim
|
30 | 30 | from httpx import Timeout
|
31 | 31 |
|
| 32 | +ANTHROPIC_API_KEY = os.getenv('ANTHROPIC_API_KEY') |
| 33 | + |
32 | 34 |
|
33 | 35 | # Pattern to match :b<buffer_number> with at least one surrounding whitespace
|
34 | 36 | BUFFER_PATTERN = re.compile(r'\s+:b(\d+)\s+')
|
@@ -184,18 +186,6 @@ def _get_filename_from_response(response: anthropic.types.Message) -> str:
|
184 | 186 | # Escape spaces and special characters in filename
|
185 | 187 | return shlex.quote(filename)
|
186 | 188 |
|
187 |
| - @staticmethod |
188 |
| - def get_claude_models() -> List[str]: |
189 |
| - """Get a list of available Anthropic models.""" |
190 |
| - models = [ |
191 |
| - "claude-3-5-sonnet-20240620", |
192 |
| - "claude-3-5-haiku-20241022", |
193 |
| - "claude-3-opus-20240229", |
194 |
| - "claude-3-sonnet-20240229", |
195 |
| - "claude-3-haiku-20240229", |
196 |
| - ] |
197 |
| - return models |
198 |
| - |
199 | 189 | def _count_tokens(self, messages: List[dict]) -> Tuple[int, int]:
|
200 | 190 | if not messages:
|
201 | 191 | return 0, []
|
@@ -491,6 +481,11 @@ def replace_buffer(match):
|
491 | 481 | self.nvim.err_write(
|
492 | 482 | f"Error generating response:\n{format_exc()}\n")
|
493 | 483 |
|
| 484 | + def get_claude_models(self) -> List[str]: |
| 485 | + """Get a list of available Anthropic models.""" |
| 486 | + models = self.claude_client.models.list() |
| 487 | + return [model.id for model in models.data] |
| 488 | + |
494 | 489 | @pynvim.command('Cl', nargs='0', sync=False)
|
495 | 490 | def claude_command(self, args: List[str]) -> None:
|
496 | 491 | return self.do_completion(self.claude_client.messages.create, args)
|
|
0 commit comments