coderg / core_logic_hybrid.py
prashantmatlani's picture
groq inference
b83d944
Raw
History Blame Contribute Delete
4.36 kB
# ./core_logic_hybrid.py -> Token-safe
"""
Hybrid: Local LLM with HF UI
"Master Stroke" for sharing app while keeping compute costs at zero; with UI on Hugging Face, the app "calls home" - the local PC - for answers.
We expose local Ollama, via the secret "LOCAL_LLM_URL" as "The Tunnel", a secure bridge between the Hugging Face-hosted UI and the local LLM. By default, Ollama only listens to localhost, so we tell it to accept external traffic from the tunnel:
. The UI sends user messages to the Tunnel, which forwards them to the local Ollama instance
. Ollama processes the request and sends the response back through the Tunnel to the UI."
"""
import os
from openai import OpenAI
from tools import web_search, parse_file
# Hybrid bridge - Sanitized URL to prevent double slashes
tunnel_url = os.getenv("LOCAL_LLM_URL", "").rstrip("/")
client = OpenAI(
base_url=f"{tunnel_url}/v1",
api_key="ollama"
)
model = "gemma4:latest"
SYSTEM_PROMPT = """
You are the 'Silicon Architect' — a full-stack, master-stroke creative genius in AI Engineering and Technical Architecture.
Your goal is to provide production-grade, highly optimized solutions for web and mobile AI applications.
Expertise: Python (latest production version), Agentic Loops, FastAPI, and Scalable Architecture.
Provide production-ready code and rigorous technical research with appropriate comments. Analyze files when provided. Be concise.
CORE DIRECTIVES:
1. ARCHITECTURAL RIGOR: Always consider scalability, async patterns, and state management.
2. AGENTIC EXPERTISE: You understand recurrent-depth simulations, tool-calling, and autonomous loops.
3. CODE QUALITY: Write clean, PEP 8 compliant, and secure Python/JS code.
4. INNOVATION: Suggest the latest libraries and frameworks (FastAPI, LangGraph, Pydantic AI; but not limited to these).
5. RESEARCH: If the user asks about new tech, use your Web Search capability to provide factual, up-to-date documentation.
PERSONALITY:
1. FRANK/POLITE: Disagree with the user, if needed; never resort to sycophancy, and suggest better alternatives.
2. HUMBLE: Apologize when mistaken.
3. FIRST PRINCIPLES: Base your responses and reasoning in Richard Feynman’s first principles thinking. Break down complex problems into fundamental truths and reason up from there.
When a user provides files, analyze the code structure and logic before proposing changes.
"""
def chat_function(message, history):
user_text = message.get("text", "")
files = message.get("files", [])
# 1. Process Files with character limits
context_from_files = ""
for f in files:
path = f["path"] if isinstance(f, dict) else f
file_content = parse_file(path)
context_from_files += file_content
# TRUNCATE FILE CONTEXT: Max ~3000 tokens (approx 12,000 chars)
if len(context_from_files) > 12000:
context_from_files = context_from_files[:12000] + "\n...[File Content Truncated]..."
# 2. Research Trigger
if any(keyword in user_text.lower() for keyword in ["search", "docs", "latest"]):
research_context = web_search(user_text)
prompt = f"RESEARCH:\n{research_context}\n\nFILES:\n{context_from_files}\n\nUSER: {user_text}"
else:
prompt = f"FILES:\n{context_from_files}\n\nUSER: {user_text}"
# 3. Build Messages with History Slicing
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
# Keep last 3 turns for context stability
for turn in history[-3:]:
messages.append({"role": turn["role"], "content": turn["content"]})
messages.append({"role": "user", "content": prompt})
try:
completion = client.chat.completions.create(
model=model,
messages=messages,
stream=True,
temperature=0.2, # Zero for architectural precision; incremented for creative architecture
max_tokens=1024
)
response_text = ""
for chunk in completion:
# Check for valid delta content to avoid metadata crashes
if chunk.choices and hasattr(chunk.choices[0].delta, 'content'):
token = chunk.choices[0].delta.content
if token:
response_text += token
yield response_text
except Exception as e:
yield f"Silicon Error: {str(e)}"