import openai import json from dotenv import load_dotenv import os def handle_creating_json(output_1): print("Before GPT: " , output_1) #output_1= [{'invoice_number': '349136', 'table_data': [{'label': 'Product_Code', 'text': ''}, {'label': 'Description', 'text': '1ST FLOOR WALLS'}, {'label': 'Price', 'text': ''}, {'label': 'Line_Amount', 'text': ''}, {'label': 'Product_Code', 'text': 'CPL1216'}, {'label': 'Description', 'text': "11.875 X 16 ' Pro Lam 2.0 LVL 1.75 ( 7 @ 16 ' , 4 @\n8 ' )"}, {'label': 'Price', 'text': '139.09'}, {'label': 'Line_Amount', 'text': '1,251.81'}, {'label': 'Product_Code', 'text': 'CPL1210'}, {'label': 'Description', 'text': "COLUMN\n11.875 X 10 ' Pro Lam 2.0 LVL 1.75"}, {'label': 'Price', 'text': '87.56'}, {'label': 'Line_Amount', 'text': '525.36'}, {'label': 'Product_Code', 'text': 'CPCB35558'}, {'label': 'Description', 'text': "Power Column 3 1/2 X 5 1/2 - 08 '"}, {'label': 'Price', 'text': '82.51'}, {'label': 'Line_Amount', 'text': '330.04'}]}] load_dotenv() # Initialize OpenAI with your API key openai.api_key = os.getenv("OPENAI_API_KEY") prompt = f""" You are an excellent programmer and specialize in the construction industry, knowing everything about building a house. Given a JSON which resembles a table, you have two tasks: 1. extract product description and determine or predict whether product descriptions is Exterior Door/Finish/ Framing/Siding/Windows or Roofing. Think well and do some self reflection. Do not share your thought process with me though. 2. Once you have thought through, produce a json, easily convertible to a dataframe in python, which would contain invoice number, product description, predicted material, confidence ( b/w 0-1, your confidence score which shows how sure are you about your prediction). If there is no predicted material found, choose any that you find suitable, but DO NOT put NA. Remember: You just have to share the output json, no thought process or extra words or anything else. If you are not able to identify the invoice number just write NA. No apologies or regret. Always produce an output. Here is the json: {json.dumps(output_1)} """ messages=[{"role": "user", "content":prompt}] # Use OpenAI to generate a completion using GPT-4 (replace 'gpt-4.0-turbo' with the correct engine ID once available) response = openai.ChatCompletion.create( model="gpt-4", max_tokens=5000, temperature=0, messages = messages ) # Extracting the result result = response.choices[0]["message"]["content"] print("After gpt") print(json.loads(result)) return json.loads(result)