File size: 3,576 Bytes
2221a1f
e73a724
2221a1f
 
06b2c0f
53e4475
06b2c0f
e73a724
 
b3eb52a
e73a724
 
b3eb52a
e73a724
 
 
 
 
53e4475
e73a724
daa547a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e73a724
 
 
c219d30
e73a724
 
 
 
 
 
 
 
 
 
 
b3eb52a
f2416ec
 
 
 
 
 
 
 
 
 
 
 
 
4ec3e61
e73a724
af0caa1
4ec3e61
e73a724
92ff4de
d104111
e73a724
ee054d1
 
 
e73a724
 
aa2566a
e73a724
ee054d1
428386b
 
 
 
 
 
e73a724
 
 
 
aa2566a
4e05833
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import streamlit as st
import requests
import os

# Set page title and layout
st.set_page_config(page_title="Super Prompt Generator", layout="wide") 

# API key from environment variable
API_KEY = os.environ.get("NEBIUS_API_KEY")

if not API_KEY:
    st.error("API key not found. Please set the `NEBIUS_API_KEY` environment variable.")

# Function to call Nebius API
def generate_response(prompt, api_key):
    api_url = "https://api.studio.nebius.ai/v1/chat/completions"
    headers = {"Authorization": f"Bearer {api_key}"}
    payload = {
        "model": "microsoft/Phi-3.5-mini-instruct",
        "messages": [
            {"role": "system", "content": """You are a Prompt Generator designed to create task-specific prompts for various user requests. Your goal is to structure prompts in a clear and organized format, ensuring that each step or instruction is well-defined and actionable.
Generate Prompt:
Task:
[Specify the task or action the user needs help with, always give it a persona like you are a {task based on user input} generator eg- article generator, your is to generate {Define Task in simple way}]
Objective:
[Define the goal or purpose of the task, including what the user aims to achieve]
Steps:
[List the steps or instructions required to complete the task]
Considerations:
[Include any additional factors the user should consider, such as limitations, preferences, or specific conditions]
Output Format:
[Describe the desired output format, whether it's a report, image, text, or other deliverables]
Guidelines for Task-Specific Prompts:
Structure the task prompt clearly with numbered steps or bullet points for easy understanding.
Tailor the language and level of complexity based on the user’s input or desired difficulty level.
Ensure the prompt is actionable, providing clear instructions that lead to the intended outcome. Don't write anything right now wait for my command."""},
           
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.6,
        "max_tokens": 750,
        "top_p": 0.9,
        "top_k": 50
    }
    
    response = requests.post(api_url, headers=headers, json=payload)
    
    if response.status_code == 200:
        return response.json()
    else:
        st.error(f"Error: {response.status_code}, {response.text}")
        return None

# Custom CSS for centering
st.markdown(
    """
    <style>
    .title-container {
        text-align: center;
        margin-bottom: 20px;
    }
    </style>
    """,
    unsafe_allow_html=True
)

# Input bar for user prompt
user_input = st.text_area(
    label="Simple Prompt to Super Prompt Converter",
    placeholder="Type or Paste Your Input..."
)

if st.button("Generate", use_container_width=True):
    if user_input.strip():
        with st.spinner("Generating... Please wait!"):
            result = generate_response(user_input, API_KEY)
        
        if result:
            try:
                # Extracting generated response
                assistant_message = result["choices"][0]["message"]["content"]
                
                # Remove Markdown-like formatting characters
                import re
                cleaned_message = re.sub(r"\*\*|__", "", assistant_message)  # Removes ** and __
                
                # Displaying cleaned output in a plain text code block
                st.code(cleaned_message, language="text")
            except KeyError as e:
                st.error(f"Unexpected response format: {e}")
    else:
        st.warning("Please provide input before clicking Generate.")