Spaces:
Running
on
L4
Running
on
L4
import os | |
from openai import OpenAI | |
# from dotenv import load_dotenv | |
# load_dotenv() # | |
#-------------------------------------------------------- | |
# Initialize OpenAI client | |
#-------------------------------------------------------- | |
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) | |
def embed_question_openai(texts, model="text-embedding-3-small"): | |
response = client.embeddings.create( | |
input=texts, | |
model=model | |
) | |
return response.data[0].embedding | |
def openai_domain_specific_answer_generation(system_prompt, question, model="gpt4o-mini", temperature=0.3, top_p=0.1): | |
prompt = f""" | |
Question: | |
{question} | |
Answer (provide a precise, domain-specific response): | |
""" | |
response = client.chat.completions.create( | |
model=model, | |
messages=[ | |
{ | |
"role": "system", | |
"content": system_prompt | |
}, | |
{ | |
"role": "user", | |
"content": prompt | |
} | |
], | |
temperature=temperature, # Set low for deterministic and precise responses. | |
top_p=top_p, # Focus on high-probability outputs to ensure accuracy. | |
frequency_penalty=0.1, # Reduce repetition of technical terms. | |
presence_penalty=0.0 # Prevent introduction of unrelated ideas. | |
) | |
return response.choices[0].message.content | |
def openai_context_integration(system_prompt, query, expert_answer, retrieved_context, model="gpt4o-mini", temperature=0.3, top_p=0.3): | |
prompt = f""" | |
Question: | |
{query} | |
Direct Answer: | |
{expert_answer} | |
Retrieved Context: | |
{retrieved_context} | |
Final Answer: | |
""" | |
response = client.chat.completions.create( | |
model=model, | |
messages=[ | |
{ | |
"role": "system", | |
"content": system_prompt | |
}, | |
{ | |
"role": "user", | |
"content": prompt | |
} | |
], | |
temperature=temperature, # Maintain some flexibility for smooth blending. | |
top_p=top_p, # Prioritize high-probability outputs to stay focused on the inputs. | |
frequency_penalty=0.1, # Allow necessary repetition for clarity. | |
presence_penalty=0.0 # Neutral to avoid introducing unrelated ideas. | |
) | |
return response.choices[0].message.content | |