File size: 2,252 Bytes
4c95634
 
ade2028
0b184f7
 
957adf6
0b184f7
 
 
957adf6
6c38b0b
0b184f7
ade2028
5b7aab3
6ded4c2
ade2028
6ded4c2
 
 
 
ade2028
6ded4c2
ade2028
ba5f007
 
6ded4c2
ba5f007
c8164e7
 
 
1125ba5
ba5f007
6ded4c2
 
 
 
ba5f007
6ded4c2
 
 
 
a3f7cf5
6ded4c2
 
 
 
ade2028
6ded4c2
 
 
 
 
 
 
ade2028
99dcb22
6ded4c2
 
4c95634
ade2028
6ded4c2
 
99dcb22
6c38b0b
6ded4c2
4c95634
 
 
6ded4c2
 
4c95634
 
 
 
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
import gradio as gr
import requests
from smolagents import CodeAgent
import logging
from tenacity import retry, stop_after_attempt, wait_exponential

# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

HF_SPACE_URL = "https://manavraj-troubleshoot-mcp.hf.space"

@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def call_mcp_server(message: str, tool_type: str = "knowledge_base") -> str:
    """Call MCP server endpoint"""
    try:
        endpoint = f"{HF_SPACE_URL}/api/{tool_type}"
        response = requests.post(endpoint, json={"data": [message]}, timeout=30)
        response.raise_for_status()
        return response.json()['data'][0]
    except Exception as e:
        logger.error(f"API call failed: {str(e)}")
        return f"Error: {str(e)}"

agent = CodeAgent(
    tools=[],
    model="microsoft/DialoGPT-medium",
    system_prompt="""{{authorized_imports}}
- requests for API calls
- standard Python libraries
{{managed_agents_descriptions}}

You are a Technical Support Assistant with these capabilities:
1. Troubleshooting technical issues
2. Finding information via web search
3. Formatting instructions

Access tools through MCP server:
- knowledge_base: For technical issues
- web_search: For information lookup
- formatter: To organize steps

Response workflow:
1. Analyze user request
2. Choose appropriate tool
3. Return clear response

Example:
USER: My wifi disconnected
THOUGHT: Should use knowledge_base
ACTION: knowledge_base("wifi disconnection")
RESPONSE: Try these steps: [solution steps]

Never show internal workflow to user."""
)

def chat_interface(message: str, history: list) -> str:
    """Handle chat interaction"""
    try:
        response = agent.run(message)
        final = str(response).split("RESPONSE:")[-1].strip()
        return final if final else "I couldn't process that request."
    except Exception as e:
        logger.error(f"Chat error: {str(e)}")
        return f"Error: {str(e)}"

demo = gr.ChatInterface(
    fn=chat_interface,
    title="🔧 Technical Support",
    examples=["Wifi not working", "Find Windows 11 specs", "Format: Turn off. Wait. Restart"]
)

if __name__ == "__main__":
    demo.launch()