Custom-Diet-Plan / openai_api_response.py
v23joshi's picture
Upload 6 files
082066c verified
from langchain_openai import OpenAI
from langchain.prompts import PromptTemplate
from langchain.output_parsers import ResponseSchema, StructuredOutputParser
from dotenv import load_dotenv
import os
load_dotenv()
llm = OpenAI(temperature=0.0, openai_api_key=os.getenv("OPENAI_API_KEY"))
question_string = """ \
I am a {age} {gender}. \
My calorie goal for the day is {required_calories}. \
I am a {dietry}. I want to have 5 meals in a day. \
Create a meal plan using these details. \
Using these details answer the following question: \
meal1: What should be the breakfast and how many calories are in there? \
meal2: What should be the mid day snack and how many calories are in there? \
meal3: What should be the lunch and how many calories are in there? \
meal4: What should be the evening snack and how many calories are in there? \
meal5: What should be the dinner and how many calories are in there? \
{format_instructions}
"""
prompt_template = PromptTemplate(
input_variables=["age", "gender", "required_calories", "dietry"],
template=question_string,
)
meal1 = ResponseSchema(name="meal1", description="What should be the breakfast and how many calories are in there?")
meal2 = ResponseSchema(name="meal2", description="What should be the mid day snack and how many calories are in there?")
meal3 = ResponseSchema(name="meal3", description="What should be the lunch and how many calories are in there?")
meal4 = ResponseSchema(name="meal4", description="What should be the evening snack and how many calories are in there?")
meal5 = ResponseSchema(name="meal5", description="What should be the dinner and how many calories are in there?")
response_schema = [meal1, meal2, meal3, meal4, meal5]
output_parser = StructuredOutputParser.from_response_schemas(response_schema)
format_instructions = output_parser.get_format_instructions()
def get_openai_response(age,gender,required_calories,dietary):
question = prompt_template.format(
age=age,
gender=gender,
required_calories=required_calories,
dietry=dietary,
format_instructions=format_instructions
)
response = llm.invoke(question)
response = output_parser.parse(response)
return response