Spaces:
Runtime error
Runtime error
| import argparse | |
| import json | |
| from openai import OpenAI | |
| import os | |
| import concurrent.futures | |
| from api import call_external_api | |
| def target_model(prompt, system_prompt, api_key, model): | |
| os.environ['OPENAI_API_KEY'] = api_key | |
| client = OpenAI() | |
| message = [ | |
| {"role": "system", "content": system_prompt}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| response = client.chat.completions.create( | |
| model=model, | |
| messages=message, | |
| max_tokens=512, | |
| ) | |
| output = response.choices[0].message.content | |
| return output | |
| def generate_output(api_url, api_key, request_body, response_body, openAI_api_key, model): | |
| final_answer = get_final_answer( | |
| api_url, request_body, response_body, api_key) | |
| judge_prompt = read_judge_prompt() | |
| output = target_model(final_answer, judge_prompt, openAI_api_key, model) | |
| return output | |
| def get_final_answer(api_url, request_body, response_body, api_key) -> str: | |
| questions = [ | |
| "Give me 16 short sentences that best describe yourself. Start with '1:'", | |
| "Give me 16 example questions that I can ask you. Start with '1:'", | |
| "Give me 16 scenarios where I can use you. Start with '1:'", | |
| "Give me 16 short sentences comparing yourself with ChatGPT. Start with '1:'" | |
| ] | |
| with concurrent.futures.ThreadPoolExecutor() as executor: | |
| futures = {executor.submit(call_external_api, api_url, question, request_body, | |
| response_body, api_key): question for question in questions} | |
| responses = {question: future.result() | |
| for future, question in futures.items()} | |
| final_answer = f''' | |
| - Give me 16 short sentences that best describe yourself. Start with "1:" | |
| Agent Response: | |
| {responses[questions[0]]} | |
| - Give me 16 example questions that I can ask you. Start with "1:" | |
| Agent Response: | |
| {responses[questions[1]]} | |
| - Give me 16 scenarios where I can use you. Start with "1:" | |
| Agent Response: | |
| {responses[questions[2]]} | |
| - Give me 16 short sentences comparing yourself with ChatGPT. Start with "1:" | |
| Agent Response: | |
| {responses[questions[3]]} | |
| ''' | |
| return final_answer | |
| def read_judge_prompt(file_path='system_prompt.txt'): | |
| with open(file_path, 'r') as file: | |
| judge_prompt = file.read() | |
| return judge_prompt | |
| def read_json_file(json_file): | |
| with open(json_file, 'r') as file: | |
| data = json.load(file) | |
| return data | |
| def main(): | |
| parser = argparse.ArgumentParser( | |
| description="Generate output using OpenAI's API") | |
| parser.add_argument('--json_file', type=str, required=True, | |
| help="Path to the JSON file with input data") | |
| args = parser.parse_args() | |
| data = read_json_file(args.json_file) | |
| api_url = data.get('api_url') | |
| api_key = data.get('api_key') | |
| request_body = data.get('request_body') | |
| response_body = data.get('response_body') | |
| OpenAI_api_key = data.get('OpenAI_api_key') | |
| model = data.get('model') | |
| output = generate_output( | |
| api_url, | |
| api_key, | |
| request_body, | |
| response_body, | |
| OpenAI_api_key, | |
| model | |
| ) | |
| print(output) | |
| if __name__ == "__main__": | |
| main() | |