From cea40089b59b6b468b75a2e10cc2abccf1f1b23d Mon Sep 17 00:00:00 2001 From: Ross Rheingans-Yoo Date: Tue, 21 Nov 2023 05:48:22 +0000 Subject: [PATCH 1/3] fix reference to anthropic lib version --- prosaic_kernel/kernel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prosaic_kernel/kernel.py b/prosaic_kernel/kernel.py index 4cdd6fa..4b9a6c9 100644 --- a/prosaic_kernel/kernel.py +++ b/prosaic_kernel/kernel.py @@ -41,7 +41,7 @@ class MetaKernelProsaic(MetaKernel): implementation_version = __version__ language = 'markdown' - language_version = anthropic.ANTHROPIC_CLIENT_VERSION + language_version = anthropic.__version__ banner = "Prosaic kernel - ask and we shall answer" #REVIEW language_info = {'name': 'prosaic', From 95d141b9204a1341f7a806632a8dfb9e8623b138 Mon Sep 17 00:00:00 2001 From: Ross Rheingans-Yoo Date: Tue, 21 Nov 2023 08:40:29 +0000 Subject: [PATCH 2/3] update to anthropic client lib version 0.3 --- prosaic_kernel/kernel.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/prosaic_kernel/kernel.py b/prosaic_kernel/kernel.py index 4b9a6c9..99d04bd 100644 --- a/prosaic_kernel/kernel.py +++ b/prosaic_kernel/kernel.py @@ -8,29 +8,29 @@ __version__ = '0.0.2' -class EnvClient(anthropic.Client): +class EnvClient(anthropic.Anthropic): def __init__(self) -> None: - super().__init__(os.environ["ANTHROPIC_API_KEY"]) + super().__init__() class AnthropicQuery: - def __init__(self, query: str, prefix="", client: Optional[anthropic.Client] = None) -> None: + def __init__(self, query: str, prefix="", client: Optional[anthropic.Anthropic] = None) -> None: self.client = client or EnvClient() self.query_prompt = f"{anthropic.HUMAN_PROMPT} {query}{anthropic.AI_PROMPT}" self.answer = None self.api_args = dict( prompt = prefix + self.query_prompt, stop_sequences=[anthropic.HUMAN_PROMPT], - max_tokens_to_sample=500, #TODO configure max_tokens model etc - model="claude-instant-v1", + max_tokens_to_sample=800, #TODO configure max_tokens model etc + model=" claude-instant-1", ) def sync(self, **kwargs): - self.answer = self.client.completion(**self.api_args, **kwargs)['completion'] + self.answer = self.client.completions.create(**self.api_args, **kwargs).completion return self.answer def stream(self, **kwargs): - for message in self.client.completion_stream(**self.api_args, **kwargs): - self.answer = message['completion'] + for message in self.client.completions.create(**self.api_args, **kwargs, stream=True): + self.answer = message.completion yield self.answer def prompt_and_answer(self): @@ -95,8 +95,7 @@ def do_execute_direct(self, code): query = AnthropicQuery(code.strip(), prefix="".join(self.chat_log)) for message in query.stream(): - self.clear_output(wait=True) - self.Print(message) + self.Print(message, end="") if query.prompt_and_answer(): self.chat_log.append(query.prompt_and_answer()) except KeyboardInterrupt: From 0086cc026c104d5a9e7acbbd9cfed845c10c9b26 Mon Sep 17 00:00:00 2001 From: Ross Rheingans-Yoo Date: Tue, 21 Nov 2023 08:52:04 +0000 Subject: [PATCH 3/3] fix bug where streamed answers weren't being logged --- prosaic_kernel/kernel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prosaic_kernel/kernel.py b/prosaic_kernel/kernel.py index 99d04bd..72a893c 100644 --- a/prosaic_kernel/kernel.py +++ b/prosaic_kernel/kernel.py @@ -30,8 +30,8 @@ def sync(self, **kwargs): def stream(self, **kwargs): for message in self.client.completions.create(**self.api_args, **kwargs, stream=True): - self.answer = message.completion - yield self.answer + self.answer += message.completion + yield message.completion def prompt_and_answer(self): if self.answer is not None: return self.query_prompt + self.answer