import gradio as gr import random import time from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler from langchain.chat_models import ChatOpenAI from langchain.llms import OpenAI import os import json import openai import random import asyncio from langchain.prompts import ( ChatPromptTemplate, HumanMessagePromptTemplate ) from ast import literal_eval from langchain.chat_models import ChatOpenAI from langchain.schema import ( HumanMessage, ) import json from langchain.chat_models import ChatOpenAI from langchain.llms import OpenAI from langchain.chat_models import ChatAnthropic from langchain.output_parsers import PydanticOutputParser from pydantic import BaseModel, Field from typing import List import json from ast import literal_eval import os import openai import random import time import copy import asyncio from prompts import system_structure_template, system_epics_template, story_cards_template, schema_template, entities_template, update_schema_template, check_message_template, update_story_cards_template import helper myl = [] os.environ['OPENAI_API_KEY'] = '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' openai.api_key = "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" epics = [] latest_nums = [] # Deleting all the files after each update for file in os.listdir(): if file.endswith('_gradio.json'): helper.delete(file) async def random_response(message, history, my_list=myl): print(message) if helper.Validating_Input(message): # Check if the question about gpt return helper.apologise(random.randint(0,3)) if not helper.is_all_english_alpha_numeric_or_space(message): # Check if the non english text sent return helper.apologise_lang(random.randint(0,3)) # ============================================================================================ if message.isnumeric(): latest_nums.append((int(message)+1)) if int(message)==1: return helper.create_user_story() elif int(message)==2: latest_nums.append(-1) return "Sorry, this option will be available in the next version!" + helper.choose() else: latest_nums.append(-1) return 'return a valid number please' if len(myl) == 0: latest_nums.append(1) myl.append(1) return "Welcome to فزاع \n\n" + "Please write your systm discreption in order to build a system" else: if latest_nums[-1] not in [1,2,3]: latest_nums.pop() return 'return a valid number. ' + helper.choose() if latest_nums[-1] == 1: myl.append(1) # First Prompt System Structure start_time = time.time() response = helper.first_prompt(system_name = message) elapsed_time = time.time() - start_time print(f"first_prompt {elapsed_time:.2f} seconds to run.") # Second Prompt Epics start_time = time.time() epics = await helper.second_prompt(response, system_name = message) elapsed_time = time.time() - start_time print(f"epics {elapsed_time:.2f} seconds to run.") # Third Prompt Entities start_time = time.time() entities = helper.third_prompt(epics) elapsed_time = time.time() - start_time print(f"entities {elapsed_time:.2f} seconds to run.") # Fourth Prompt Data Schema start_time = time.time() all_schemas = await helper.fourth_prompt(entities, epics) elapsed_time = time.time() - start_time print(f"all_schemas {elapsed_time:.2f} seconds to run.") # return markdown output = helper.markdown('epics_gradio.json') + helper.choose() latest_nums.append(-1) return output if latest_nums[-1] == 2: # res = check('user story card', message).lower() # print(res) # if res == 'no': # return apologise(random.randint(0,3))+"\n\n"+create_user_story() start_time = time.time() helper.affected_parts(user_request = message) elapsed_time = time.time() - start_time print(f"affected_parts {elapsed_time:.2f} seconds to run.") output = "" start_time = time.time() new_card = helper.generate_story_cards(user_request = message) elapsed_time = time.time() - start_time print(f"generate_story_cards {elapsed_time:.2f} seconds to run.") start_time = time.time() output += helper.user_story_to_markdown(new_card) + "\n\n\n" elapsed_time = time.time() - start_time print(f"user_story_to_markdown {elapsed_time:.2f} seconds to run.") start_time = time.time() story_ids = helper.check_affected_story_ids() elapsed_time = time.time() - start_time print(f"check_affected_story_ids {elapsed_time:.2f} seconds to run.") start_time = time.time() if len(story_ids) != 0: updated_cards = await helper.update_affected_story_cards(story_ids) output += "=============================== The following is the affected user story card ==================================\n\n" for card in updated_cards: output += helper.user_story_to_markdown(card) elapsed_time = time.time() - start_time print(f"update_affected_story_cards {elapsed_time:.2f} seconds to run.") output += helper.choose() latest_nums.append(-1) return output