Spaces:
Sleeping
Sleeping
| from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT | |
| from ..presets import * | |
| from ..utils import * | |
| from .base_model import BaseLLMModel | |
| class Claude_Client(BaseLLMModel): | |
| def __init__(self, model_name, api_secret) -> None: | |
| super().__init__(model_name=model_name) | |
| self.api_secret = api_secret | |
| if None in [self.api_secret]: | |
| raise Exception("请在配置文件或者环境变量中设置Claude的API Secret") | |
| self.claude_client = Anthropic(api_key=self.api_secret) | |
| def get_answer_stream_iter(self): | |
| system_prompt = self.system_prompt | |
| history = self.history | |
| if system_prompt is not None: | |
| history = [construct_system(system_prompt), *history] | |
| completion = self.claude_client.completions.create( | |
| model=self.model_name, | |
| max_tokens_to_sample=300, | |
| prompt=f"{HUMAN_PROMPT}{history}{AI_PROMPT}", | |
| stream=True, | |
| ) | |
| if completion is not None: | |
| partial_text = "" | |
| for chunk in completion: | |
| partial_text += chunk.completion | |
| yield partial_text | |
| else: | |
| yield STANDARD_ERROR_MSG + GENERAL_ERROR_MSG | |
| def get_answer_at_once(self): | |
| system_prompt = self.system_prompt | |
| history = self.history | |
| if system_prompt is not None: | |
| history = [construct_system(system_prompt), *history] | |
| completion = self.claude_client.completions.create( | |
| model=self.model_name, | |
| max_tokens_to_sample=300, | |
| prompt=f"{HUMAN_PROMPT}{history}{AI_PROMPT}", | |
| ) | |
| if completion is not None: | |
| return completion.completion, len(completion.completion) | |
| else: | |
| return "获取资源错误", 0 | |