import gradio as gr from huggingface_hub import InferenceClient import time client = InferenceClient("lambdaindie/lambdai") css = """ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap'); { font-family: 'JetBrains Mono', monospace !important; } body { background-color: #111; color: #e0e0e0; } .markdown-think { background-color: #1e1e1e; border-left: 4px solid #555; padding: 10px; margin-bottom: 8px; font-style: italic; white-space: pre-wrap; animation: pulse 1.5s infinite ease-in-out; } @keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1.0; } 100% { opacity: 0.6; } } """ def respond(message, history, system_message, max_tokens, temperature, top_p): messages = [{"role": "system", "content": system_message}] if system_message else [] for user, assistant in history: if user: messages.append({"role": "user", "content": user}) if assistant: messages.append({"role": "assistant", "content": assistant}) thinking_prompt = messages + [{ "role": "user", "content": f"{message}\n\nThink a bit step-by-step before answering." }] reasoning = "" yield '
Thinking...
' start = time.time() for chunk in client.chat_completion( thinking_prompt, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = chunk.choices[0].delta.content or "" reasoning += token styled_thought = f'
{reasoning.strip()}
' yield styled_thought elapsed = time.time() - start yield f"""
Pensou por {elapsed:.1f} segundos
""" time.sleep(2) final_prompt = messages + [ {"role": "user", "content": message}, {"role": "assistant", "content": reasoning.strip()}, {"role": "user", "content": "Now answer based on your reasoning above."} ] final_answer = "" for chunk in client.chat_completion( final_prompt, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = chunk.choices[0].delta.content or "" final_answer += token yield final_answer.strip() demo = gr.ChatInterface( fn=respond, title="λambdAI", theme=gr.themes.Base(), css=css, additional_inputs=[ gr.Textbox(value="", label="System Message"), gr.Slider(64, 2048, value=512, step=1, label="Max Tokens"), gr.Slider(0.1, 2.0, value=0.7, step=0.1, label="Temperature"), gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="Top-p") ] ) if name == "main": demo.launch()