Spaces:
Running
Running
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 | |