From 3bf536b1accb6456ef30b3b67cb82ad7e3a73423 Mon Sep 17 00:00:00 2001 From: arturborja <106710691+arturborja@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:45:14 -0300 Subject: [PATCH 1/2] Update owchatgptbase.py Fix compatibility with OpenAI API models Corrigindo compatibilidade com modelos no OpenAI API --- orangecontrib/prototypes/widgets/owchatgptbase.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/orangecontrib/prototypes/widgets/owchatgptbase.py b/orangecontrib/prototypes/widgets/owchatgptbase.py index b43cfbf6..d26c22c2 100644 --- a/orangecontrib/prototypes/widgets/owchatgptbase.py +++ b/orangecontrib/prototypes/widgets/owchatgptbase.py @@ -16,7 +16,7 @@ ContextSetting from Orange.widgets.widget import OWWidget, Input, Msg -MODELS = ["gpt-3.5-turbo", "gpt-4"] +MODELS = ["gpt-3.5-turbo", "gpt-4",'o3-mini','o1-mini','gpt-4o-mini'] def run_gpt( @@ -27,18 +27,15 @@ def run_gpt( prompt_end: str ) -> str: client = openai.OpenAI(api_key=api_key) - enc = tiktoken.encoding_for_model(model) + enc = tiktoken.get_encoding("o200k_base") text = enc.decode(enc.encode(text)[:3500]) content = f"{prompt_start}\n{text}.\n{prompt_end}" response = client.chat.completions.create( model=model, - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": content}, - ], - temperature=0 + messages=[{"role": "user", "content": content}], ) + return response.choices[0].message.content From 794c9a8231322a4d8b5b2c067a7313d4fc80252d Mon Sep 17 00:00:00 2001 From: Artur Borja <106710691+arturborja@users.noreply.github.com> Date: Tue, 1 Apr 2025 00:16:56 -0300 Subject: [PATCH 2/2] Update owchatgptbase.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Double quotes and spaces: Updated MODELS to ["gpt-3.5-turbo", "gpt-4", "o3-mini", "o1-mini", "gpt-4o-mini"] with " and spaces for consistency and readability. Encoding and library: Replaced hardcoded "o200k_base" with tiktoken.encoding_for_model(model) to match the encoding available for each model. Suggest tiktoken>=0.7.0 in requirements.txt for new encoding support. Parameters: Kept temperature=0 for old models where it’s supported, omitted it for new ones that may not, using it where possible. --- .../prototypes/widgets/owchatgptbase.py | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/orangecontrib/prototypes/widgets/owchatgptbase.py b/orangecontrib/prototypes/widgets/owchatgptbase.py index d26c22c2..c85f289b 100644 --- a/orangecontrib/prototypes/widgets/owchatgptbase.py +++ b/orangecontrib/prototypes/widgets/owchatgptbase.py @@ -16,8 +16,8 @@ ContextSetting from Orange.widgets.widget import OWWidget, Input, Msg -MODELS = ["gpt-3.5-turbo", "gpt-4",'o3-mini','o1-mini','gpt-4o-mini'] - +MODELS = ["gpt-3.5-turbo", "gpt-4", "o3-mini", "o1-mini", "gpt-4o-mini"] +OLD_MODELS = {"gpt-3.5-turbo", "gpt-4"} def run_gpt( api_key: str, @@ -27,17 +27,33 @@ def run_gpt( prompt_end: str ) -> str: client = openai.OpenAI(api_key=api_key) - enc = tiktoken.get_encoding("o200k_base") + + if model in OLD_MODELS: + enc = tiktoken.encoding_for_model(model) + messages = [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": f"{prompt_start}\n{text}.\n{prompt_end}"}, + ] + response = client.chat.completions.create( + model=model, + messages=messages, + temperature=0 # Apenas para modelos antigos + ) + else: + enc = tiktoken.get_encoding("o200k_base") + messages = [ + {"role": "user", "content": f"You are a helpful assistant.{prompt_start}\n{text}.\n{prompt_end}"} + ] + response = client.chat.completions.create( + model=model, + messages=messages + ) + text = enc.decode(enc.encode(text)[:3500]) - content = f"{prompt_start}\n{text}.\n{prompt_end}" - response = client.chat.completions.create( - model=model, - messages=[{"role": "user", "content": content}], - ) - return response.choices[0].message.content + class TextEdit(QTextEdit): sigEditFinished = Signal()