provider(openai): add chunk (#13) and rate limit

This commit is contained in:
0xMRTT 2023-05-06 00:41:46 +02:00
parent b2fd2566ab
commit 28de905b19
Signed by: 0xMRTT
GPG Key ID: 19C1449A774028BD

View File

@ -19,11 +19,19 @@ class BaseOpenAIProvider(BavarderProvider):
self.pref_win = None
def ask(self, prompt):
prompt = self.chunk(prompt)
try:
response = self.chat.create(
model=self.model, messages=[{"role": "user", "content": prompt}]
)
response = response.choices[0].message.content
if isinstance(prompt, list):
response = ""
for chunk in prompt:
response += self.chat.create(
model=self.model, messages=[{"role": "user", "content": chunk}]
).choices[0].message.content
else:
response = self.chat.create(
model=self.model, messages=[{"role": "user", "content": prompt}]
)
response = response.choices[0].message.content
except openai.error.AuthenticationError:
self.no_api_key()
return ""
@ -32,6 +40,11 @@ class BaseOpenAIProvider(BavarderProvider):
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
return ""
except openai.error.RateLimitError:
self.win.banner.props.title = "You exceeded your current quota, please check your plan and billing details."
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
return ""
except socket.gaierror:
self.no_connection()
return ""
@ -56,7 +69,6 @@ class BaseOpenAIProvider(BavarderProvider):
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.api_row = Adw.PasswordEntryRow()
self.api_row.connect("apply", self.on_apply)
self.api_row.props.text = openai.api_key or ""