Spaces:
Sleeping
Sleeping
import anthropic | |
from openai import OpenAI | |
import gradio as gr | |
import os | |
from prompts import codebook | |
_PROMPT_STYLES = [prompt['prompt_style'] for prompt in codebook] | |
# Function to call Claude API | |
def call_claude_api(input_text, prompt): | |
api_key = os.environ.get("ANTHROPIC_API_KEY") | |
client = anthropic.Anthropic(api_key=api_key) | |
responses = [] | |
messages = [] | |
print("Using prompt style: ", prompt['prompt_style']) | |
for prompt_message in prompt['prompts']: | |
message = {"role": "user", "content": prompt_message} | |
messages.append(message) | |
response = client.messages.create( | |
model="claude-3-5-sonnet-20240620", | |
max_tokens=1024, | |
temperature=0, | |
system=prompt['system_prompt'] + input_text, | |
messages=messages | |
) | |
messages.append({ | |
"role": "assistant", | |
"content": response.content[0].text | |
}) | |
responses.append(response.content[0].text) | |
return responses | |
def call_openai_api(input_text, prompt): | |
api_key = os.environ.get("OPENAI_API_KEY") | |
org_id = os.environ.get("OPENAI_ORG_ID") | |
project_id = os.environ.get("OPENAI_PROJECT_ID") | |
client = OpenAI( | |
api_key=api_key, | |
organization=org_id, | |
project=project_id | |
) | |
responses = [] | |
messages = [{ | |
"role": "system", "content": prompt['system_prompt'] + input_text | |
}] | |
print("Using prompt style: ", prompt['prompt_style']) | |
for prompt_message in prompt['prompts']: | |
message = {"role": "user", "content": prompt_message} | |
messages.append(message) | |
response = client.chat.completions.create( | |
model="gpt-4o-mini", | |
max_tokens=1024, | |
temperature=0, | |
messages=messages | |
) | |
messages.append({ | |
"role": "assistant", | |
"content": response.choices[0].message.content | |
}) | |
responses.append(response.choices[0].message.content) | |
return responses | |
def process_file(text_file, prompt_style_key): | |
with open(text_file.name, "r") as fd: | |
content = fd.read() | |
for prompt in codebook: | |
if prompt['prompt_style'] == prompt_style_key: | |
selected_prompt = prompt | |
break | |
# responses = call_claude_api(content, prompt=selected_prompt) | |
responses = call_openai_api(content, prompt=selected_prompt) | |
sections = selected_prompt["sections"] | |
final_response = '' | |
for section, response in zip(sections, responses): | |
final_response += f"# {section}\n{response}\n\n" | |
return final_response | |
# Gradio Components | |
file_upload = gr.File(label="Upload your paper (only .txt files supported)") | |
dropdown = gr.Dropdown(choices=list(_PROMPT_STYLES), label="Research domain", value=_PROMPT_STYLES[0]) | |
output = gr.Textbox(label="Critique") | |
# Gradio Interface | |
iface = gr.Interface( | |
fn=process_file, | |
inputs=[file_upload, dropdown], | |
outputs=output, | |
title="Alignment Research Critiquer", | |
description="An LLM-based app to critique AI alignment research papers." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |