Skip to content

Commit 33a5374

Browse files
committed
struc outputs support
1 parent dfea695 commit 33a5374

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

parea/utils/universal_encoder.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ def handle_openai_not_given(self, obj) -> Any:
8787
except ImportError:
8888
return None
8989

90-
from openai import NotGiven
91-
9290
if isinstance(obj, NotGiven):
9391
return {"not_given": None}
9492
return None

parea/wrapper/openai/openai.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
from openai.util import convert_to_openai_object
1818
else:
1919
from openai.types.chat import ChatCompletion as OpenAIObject
20-
from openai.types.chat import ParsedChatCompletion as OpenAIObjectParsed
21-
from openai.types.chat import ParsedChatCompletionMessage
2220

2321
def convert_to_openai_object(kwargs) -> OpenAIObject:
2422
if "id" not in kwargs:
@@ -57,9 +55,16 @@ def get_original_methods(self, module_client=openai):
5755
original_methods = {"ChatCompletion.create": module_client.ChatCompletion.create, "ChatCompletion.acreate": module_client.ChatCompletion.acreate}
5856
else:
5957
try:
60-
original_methods = {"chat.completions.create": module_client.chat.completions.create, "beta.chat.completions.parse": module_client.beta.chat.completions.parse}
58+
original_methods = {"chat.completions.create": module_client.chat.completions.create}
6159
except openai.OpenAIError:
6260
original_methods = {}
61+
62+
try:
63+
latest_methods = {"beta.chat.completions.parse": module_client.beta.chat.completions.parse}
64+
original_methods.update(latest_methods)
65+
except Exception:
66+
pass
67+
6368
return list(original_methods.keys())
6469

6570
def init(self, log: Callable, cache: Cache = None, module_client=openai):
@@ -271,7 +276,13 @@ def _kwargs_to_llm_configuration(kwargs):
271276

272277
@staticmethod
273278
def _get_output(result: Any, model: Optional[str] = None) -> str:
274-
if not isinstance(result, (OpenAIObject, OpenAIObjectParsed)) and isinstance(result, dict):
279+
try:
280+
from openai.types.chat import ParsedChatCompletion, ParsedChatCompletionMessage
281+
except ImportError:
282+
ParsedChatCompletion = None
283+
ParsedChatCompletionMessage = None
284+
285+
if not isinstance(result, (OpenAIObject, ParsedChatCompletion)) and isinstance(result, dict):
275286
result = convert_to_openai_object(
276287
{
277288
"choices": [

0 commit comments

Comments
 (0)