I have a class and method that I am trying to pass a self.instance_variable
as default but am unable to. Let me illustrate:
from openai import OpenAI
class Example_class:
def __init__(self) -> None:
self.client = OpenAI(api_key='xyz')
self.client2 = OpenAI(api_key='abc')
def chat_completion(self, prompt, context, client=self.client, model='gpt-4o'):
# Process the prompt
messages = [{"role": "system", "content": context}, {"role": "user", "content": prompt}]
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0.35, # this is the degree of randomness of the model's output
)
return response.choices[0].message.content
def do_something(self):
self.chat_completion(prompt="blah blah blah", context="fgasa")
You see, there is an error when trying to pass self.client
into the chat_completion
method. Where am I going wrong?
You simply cannot do it like this. Understand the "self" as an argument just like the others (it really is). You cannot access it directly from the function header
One "correct" way to do this is to define a default Value as None and check for it's content :
Class Example_class:
def chat_completion(self, prompt, context, client=None, model='gpt-4o'):
client = client or self.client # this will ensure client is never None.
# Process the prompt