summaryrefslogtreecommitdiff
path: root/server/continuedev/libs/llm/anthropic.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/continuedev/libs/llm/anthropic.py')
-rw-r--r--server/continuedev/libs/llm/anthropic.py74
1 files changed, 0 insertions, 74 deletions
diff --git a/server/continuedev/libs/llm/anthropic.py b/server/continuedev/libs/llm/anthropic.py
deleted file mode 100644
index 7d0708f1..00000000
--- a/server/continuedev/libs/llm/anthropic.py
+++ /dev/null
@@ -1,74 +0,0 @@
-from typing import Any, Callable, Coroutine
-
-from anthropic import AI_PROMPT, HUMAN_PROMPT, AsyncAnthropic
-
-from .base import LLM, CompletionOptions
-from .prompts.chat import anthropic_template_messages
-
-
-class AnthropicLLM(LLM):
- """
- Import the `AnthropicLLM` class and set it as the default model:
-
- ```python title="~/.continue/config.py"
- from continuedev.libs.llm.anthropic import AnthropicLLM
-
- config = ContinueConfig(
- ...
- models=Models(
- default=AnthropicLLM(api_key="<API_KEY>", model="claude-2")
- )
- )
- ```
-
- Claude 2 is not yet publicly released. You can request early access [here](https://www.anthropic.com/earlyaccess).
-
- """
-
- api_key: str
- "Anthropic API key"
-
- model: str = "claude-2"
-
- _async_client: AsyncAnthropic = None
-
- template_messages: Callable = anthropic_template_messages
-
- class Config:
- arbitrary_types_allowed = True
-
- async def start(self, **kwargs):
- await super().start(**kwargs)
- self._async_client = AsyncAnthropic(api_key=self.api_key)
-
- if self.model == "claude-2":
- self.context_length = 100_000
-
- def collect_args(self, options: CompletionOptions):
- options.stop = None
- args = super().collect_args(options)
-
- if "max_tokens" in args:
- args["max_tokens_to_sample"] = args["max_tokens"]
- del args["max_tokens"]
- if "frequency_penalty" in args:
- del args["frequency_penalty"]
- if "presence_penalty" in args:
- del args["presence_penalty"]
- return args
-
- async def _stream_complete(self, prompt: str, options):
- args = self.collect_args(options)
- prompt = f"{HUMAN_PROMPT} {prompt} {AI_PROMPT}"
-
- async for chunk in await self._async_client.completions.create(
- prompt=prompt, stream=True, **args
- ):
- yield chunk.completion
-
- async def _complete(self, prompt: str, options) -> Coroutine[Any, Any, str]:
- args = self.collect_args(options)
- prompt = f"{HUMAN_PROMPT} {prompt} {AI_PROMPT}"
- return (
- await self._async_client.completions.create(prompt=prompt, **args)
- ).completion