Skip to content

Commit 5f2e9b8

Browse files
committed
Updates for openailib 1.2.4
1 parent 1aa900d commit 5f2e9b8

File tree

4 files changed

+75
-65
lines changed

4 files changed

+75
-65
lines changed

README.md

+14
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ If you have added the script to your path, you can run it from anywhere:
5454
![image](https://user-images.githubusercontent.com/3023775/232043124-5bcdc240-4b86-4397-9355-ff0a8dc2f3fe.png)
5555
![image](https://user-images.githubusercontent.com/3023775/232043119-d25b1e93-c99b-48e6-b9c6-ccbc1270a800.png)
5656

57+
New openAI lib v 1.2
58+
--------------------
59+
On new installs after Nov6-23 we get the new python lib v 1.2.
60+
61+
This breaks some calls and responce types.
62+
63+
OAI v.0.6.1 is adapted to the new lib!
64+
65+
Also, providing new shortcuts for -s size when generating Images.
66+
Use '1:1', '16:9', '9:16' as shorthand for '1024x1024' and...
67+
68+
Also-2, when generating images, printing the returned eventually altered prompt.
69+
70+
5771
Image Generation
5872
----------------
5973
Available from v.0.6.0

oai.py

+15-13
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def put_session(messages):
4949
to_unicode = unicode
5050
except NameError:
5151
to_unicode = str
52+
# print(messages)
5253
with open(_session_file_, 'w', encoding='utf8') as outfile:
5354
str_ = json.dumps(messages,
5455
indent=4, sort_keys=True,
@@ -124,9 +125,10 @@ def get_fun_def(func):
124125
def print_url_list(heading, responce):
125126
console.print(heading)
126127
row = 1
127-
for url in responce.data:
128-
console.print(Markdown(" [url " + str(row) + "](" + url["url"] + ")"))
129-
128+
for img in responce.data:
129+
console.print(Markdown(" [url " + str(row) + "](" + img.url + ") " + img.revised_prompt))
130+
# console.print(img.url)
131+
# print(responce)
130132

131133
def main():
132134
desc = "This tool sends a query to OpenAIs Chat API from the command line.\n\n"\
@@ -248,57 +250,57 @@ def main():
248250
messages=[askDict]
249251

250252
if args.create:
251-
if args.size not in ["1024x1024", "1792x1024", "1024x1792"]:
253+
if args.size not in ["1:1", "1024x1024", "16:9", "1792x1024", "9:16", "1024x1792"]:
252254
print('DALL-E3 only supports, "1024x1024", "1792x1024", "1024x1792"')
253255
print("size: " + args.size)
254256
exit()
257+
if args.size == "1:1":
258+
args.size = "1024x1024"
259+
if args.size == "16:9":
260+
args.size = "1792x1024"
261+
if args.size == "9:16":
262+
args.size = "1024x1792"
255263
with console.status(f"Phoning a friend... ", spinner="pong"):
256264
print('Doing an image')
257265
openai_response = get_image(prompt, numb, args.size)
258-
# print(openai_response)
259266
print_url_list("Created links:", openai_response)
260267
exit()
261268

262269
if args.variant:
263270
with console.status(f"Phoning a friend... ", spinner="pong"):
264271
print('Variant of an image: ' + prompt)
265272
openai_response = get_variant(prompt, numb)
266-
# print(openai_response)
267273
print_url_list("Variant links:", openai_response)
268274
exit()
269275

270276
if args.edit:
271277
with console.status(f"Phoning a friend... ", spinner="pong"):
272278
print('Edit of an image: ' + prompt)
273279
openai_response = get_edit(prompt, numb)
274-
# print(openai_response)
275280
print_url_list("Edited links:", openai_response)
276281
exit()
277282

278283
with console.status(f"Phoning a friend... ", spinner="pong"):
279284
openai_response = get_chat(messages, func)
280-
if openai_response.get("function_call"):
281-
function_name = openai_response["function_call"]["name"]
285+
if openai_response.function_call != None:
286+
function_name = openai_response.function_call.name
282287
if function_name in available_functions:
283288
fuction_to_call = available_functions[function_name]
284289
else:
285290
print('Bad returned function name from OpenAI API')
286291
print(openai_response)
287-
messages.append(openai_response)
288292
messages.append({"role": "function", "name": function_name, "content": func})
289293
function_args = json.loads(openai_response["function_call"]["arguments"].strip())
290294
console.print(Markdown(function_args.get("content").strip()))
291295
put_session(messages)
292296
exit()
293297

294-
#print(openai_response["function_call"]["arguments"].strip())
295-
function_args = json.loads(openai_response["function_call"]["arguments"].strip())
298+
function_args = json.loads(openai_response.function_call.arguments.strip())
296299
#print("Function arguments")
297300
#print(function_args)
298301
function_response = fuction_to_call(
299302
**function_args
300303
)
301-
messages.append(openai_response)
302304
messages.append({"role": "function", "name": function_name, "content": function_response})
303305

304306
if function_response != 'stop':

requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
openai==0.26.4
1+
openai==1.2.4
22
appdirs==1.4.4
3-
rich==13.3.1
3+
rich==13.3.2

resources/conduit.py

+44-50
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import sys
22

33
import openai
4-
4+
from openai import OpenAI
55
from resources import config
66

7+
client = OpenAI(api_key=config.get_api_key())
8+
9+
10+
711
def get_completion(prompt):
8-
openai.api_key = config.get_api_key()
12+
913
engine = config.get_model()
1014

1115
if prompt is None:
@@ -18,15 +22,13 @@ def get_completion(prompt):
1822
# print(f"Max tokens: {max_tokens}")
1923
# print(f"Tokens in prompt: {tokens_prompt}")
2024
try:
21-
response = openai.Completion.create(
22-
engine=engine,
23-
prompt=prompt,
24-
max_tokens=max_tokens,
25-
n=1,
26-
stop=None,
27-
temperature=0.7,
28-
).choices[0].text
29-
except openai.error.APIError as e:
25+
response = client.completions.create(engine=engine,
26+
prompt=prompt,
27+
max_tokens=max_tokens,
28+
n=1,
29+
stop=None,
30+
temperature=0.7).choices[0].text
31+
except openai.APIError as e:
3032
# Handle API error here, e.g. retry or log
3133
print(f"OpenAI API returned an API Error: {e}")
3234
sys.exit()
@@ -44,25 +46,22 @@ def get_completion(prompt):
4446
return response
4547

4648
def get_chat(messages, func = ""):
47-
openai.api_key = config.get_api_key()
49+
4850
engine = config.get_model()
4951

5052
if len(messages) == 0:
5153
print("Prompt is empty. Please enter a prompt.")
5254

5355
try:
5456
if func == "":
55-
response = openai.ChatCompletion.create(
56-
model=engine,
57-
messages=messages
58-
).choices[0].message
57+
response = client.chat.completions.create(model=engine,
58+
messages=messages).choices[0].message
5959
else:
60-
response = openai.ChatCompletion.create(
61-
model=engine,
62-
messages=messages,
63-
functions=[func]
64-
).choices[0].message
65-
except openai.error.APIError as e:
60+
response = client.chat.completions.create(model=engine,
61+
messages=messages,
62+
functions=[func]).choices[0].message
63+
print(response)
64+
except openai.APIError as e:
6665
# Handle API error here, e.g. retry or log
6766
print(f"OpenAI API returned an API Error: {e}")
6867
sys.exit()
@@ -77,16 +76,16 @@ def get_chat(messages, func = ""):
7776
except openai.error.OpenAIError as e:
7877
print(f"OpenAI API returned an error: {e}")
7978
sys.exit()
79+
8080
return response
8181

8282
def get_models():
83-
openai.api_key = config.get_api_key()
83+
8484
# engine = config.get_model()
8585

8686
try:
87-
response = openai.Model.list(
88-
).data
89-
except openai.error.APIError as e:
87+
response = client.models.list().data
88+
except openai.APIError as e:
9089
# Handle API error here, e.g. retry or log
9190
print(f"OpenAI API returned an API Error: {e}")
9291
sys.exit()
@@ -107,15 +106,13 @@ def get_image(prompt, num, size):
107106
if num<1 or num>10:
108107
print("Number of variants to generate must be between 1 to 10")
109108
exit()
110-
openai.api_key = config.get_api_key()
109+
111110
try:
112-
response = openai.Image.create(
113-
prompt = prompt,
114-
n = num,
115-
size=size,
116-
model="dall-e-3"
117-
)
118-
except openai.error.APIError as e:
111+
response = client.images.generate(prompt = prompt,
112+
n = num,
113+
size=size,
114+
model="dall-e-3")
115+
except openai.APIError as e:
119116
# Handle API error here, e.g. retry or log
120117
print(f"OpenAI API returned an API Error: {e}")
121118
sys.exit()
@@ -130,6 +127,7 @@ def get_image(prompt, num, size):
130127
except openai.error.OpenAIError as e:
131128
print(f"OpenAI API returned an error: {e}")
132129
sys.exit()
130+
print(response)
133131
return response
134132

135133

@@ -142,14 +140,12 @@ def get_variant(prompt, num):
142140
except OSError:
143141
print("Missing Imagefile in this directory")
144142
exit()
145-
openai.api_key = config.get_api_key()
143+
146144
try:
147-
response = openai.Image.create_variation(
148-
image = open(prompt, "rb"),
149-
n = num,
150-
size="1024x1024"
151-
)
152-
except openai.error.APIError as e:
145+
response = client.images.generate(image = open(prompt, "rb"),
146+
n = num,
147+
size="1024x1024")
148+
except openai.APIError as e:
153149
# Handle API error here, e.g. retry or log
154150
print(f"OpenAI API returned an API Error: {e}")
155151
sys.exit()
@@ -184,22 +180,20 @@ def get_edit(prompt, num):
184180
except OSError:
185181
print("Missing Maskfile in this directory")
186182
exit()
187-
openai.api_key = config.get_api_key()
183+
188184
img = pl[0]
189185
msk = pl[1]
190186
prt = ' '.join(pl[2:])
191187
# print( img )
192188
# print( msk )
193189
# print( prt )
194190
try:
195-
response = openai.Image.create_edit(
196-
image = open(img, "rb"),
197-
mask = open(msk, "rb"),
198-
prompt = prt,
199-
n = num,
200-
size="1024x1024"
201-
)
202-
except openai.error.APIError as e:
191+
response = client.images.generate(image = open(img, "rb"),
192+
mask = open(msk, "rb"),
193+
prompt = prt,
194+
n = num,
195+
size="1024x1024")
196+
except openai.APIError as e:
203197
# Handle API error here, e.g. retry or log
204198
print(f"OpenAI API returned an API Error: {e}")
205199
sys.exit()

0 commit comments

Comments
 (0)