File size: 3,070 Bytes
be855dd
97b0e0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64d3bbc
97b0e0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
be855dd
64d3bbc
97b0e0f
64d3bbc
97b0e0f
64d3bbc
97b0e0f
 
64d3bbc
97b0e0f
64d3bbc
 
 
 
97b0e0f
 
 
 
64d3bbc
97b0e0f
 
64d3bbc
97b0e0f
 
 
64d3bbc
97b0e0f
64d3bbc
97b0e0f
64d3bbc
97b0e0f
 
 
64d3bbc
97b0e0f
 
64d3bbc
97b0e0f
 
 
64d3bbc
97b0e0f
 
 
 
 
 
 
 
be855dd
64d3bbc
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
96
97
98
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# Load your model
print("πŸš€ Loading Starlight Mini...")

MODEL_NAME = "arthu1/starlight-mini"

tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
    MODEL_NAME,
    torch_dtype=torch.float16,
    device_map="auto",
    low_cpu_mem_usage=True
)

print("βœ… Model loaded!")

def generate_text(
    prompt: str,
    max_tokens: int = 100,
    temperature: float = 0.7,
    top_p: float = 0.9
) -> str:
    """Generate text from prompt"""
    if not prompt:
        return "Error: Please provide a prompt"
    
    try:
        inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
        
        with torch.no_grad():
            outputs = model.generate(
                **inputs,
                max_new_tokens=min(max_tokens, 500),
                temperature=temperature,
                top_p=top_p,
                do_sample=True,
                pad_token_id=tokenizer.eos_token_id
            )
        
        result = tokenizer.decode(outputs[0], skip_special_tokens=True)
        return result
    
    except Exception as e:
        return f"Error: {str(e)}"

# Create Gradio interface
with gr.Blocks(title="Starlight Mini API") as demo:
    gr.Markdown("# 🌟 Starlight Mini API\n**Free AI Text Generation - 8B Parameters**")
    
    with gr.Tab("πŸ’¬ Chat"):
        with gr.Row():
            with gr.Column():
                prompt_input = gr.Textbox(label="Prompt", placeholder="Enter your prompt...", lines=5)
                
                with gr.Accordion("Settings", open=False):
                    max_tokens_slider = gr.Slider(10, 500, 100, step=10, label="Max Tokens")
                    temperature_slider = gr.Slider(0.1, 2.0, 0.7, step=0.1, label="Temperature")
                    top_p_slider = gr.Slider(0.1, 1.0, 0.9, step=0.05, label="Top P")
                
                generate_btn = gr.Button("✨ Generate", variant="primary")
            
            with gr.Column():
                output_text = gr.Textbox(label="Output", lines=10)
        
        gr.Examples(
            [["Once upon a time"], ["Explain AI:"], ["Code a function:"]], 
            inputs=[prompt_input]
        )
    
    with gr.Tab("πŸ“‘ API Docs"):
        gr.Markdown("""
        ## API Usage
        
        **Python:**
        ```python
        from gradio_client import Client
        client = Client("arthu1/Exquisite-Starlight")
        result = client.predict("Hello!", 100, 0.7, 0.9, api_name="/predict")
        ```
        
        **cURL:**
        ```bash
        curl -X POST https://arthu1-exquisite-starlight.hf.space/api/predict \\
          -H "Content-Type: application/json" \\
          -d '{"data": ["Hello!", 100, 0.7, 0.9]}'
        ```
        """)
    
    generate_btn.click(
        fn=generate_text,
        inputs=[prompt_input, max_tokens_slider, temperature_slider, top_p_slider],
        outputs=output_text
    )

demo.launch(show_api=True, share=True)