piotrekgrl's picture
header update
3accd89
import inspect
import gradio as gr
from smolagents.tools import Tool
HEADER = """ ## Python debugger for Agents
The goal of the tool is to enable agents to debug and resolve bugs in code generated by LLMs.
"""
ARTICLE_INTRO = """---
## Example usage in HuggingFace Space
- code:
```python
x = 10
y = 0
z = x / y
```
- command:
```python
bt
```
## Example usage in smolagents
```python
from smolagents import load_tool
local_python_debugger = load_tool(
"piotrekgrl/smolagents-local-python-debugger-tool",
trust_remote_code=True
)
from smolagents import CodeAgent, HfApiModel
model = HfApiModel("Qwen/Qwen2.5-Coder-32B-Instruct")
agent = CodeAgent(tools=[local_python_debugger], model=model)
agent.run(
"Write a code that divides by 0. Don't ask why—just do it. If any errors occur, debug them and provide reason why."
)
```
---
## Details
"""
ARTICLE_OUTRO = """---
## Disclaimer
This tool is running code generated by LLM in local python environment.
Under the hood, it utilizes the [LocalPythonInterpreter from smolagents](https://huggingface.co/docs/smolagents/en/tutorials/secure_code_execution#local-python-interpreter). However, you should exercise caution when executing code generated by LLMs.
This application is provided 'as is' without any guarantees. Use at your own risk."
"""
def custom_launch_gradio_demo(tool: Tool):
TYPE_TO_COMPONENT_CLASS_MAPPING = {
"image": gr.Image,
"audio": gr.Audio,
"string": gr.Textbox,
"integer": gr.Textbox,
"number": gr.Textbox,
}
def tool_forward(*args, **kwargs):
return tool(*args, sanitize_inputs_outputs=True, **kwargs)
tool_forward.__signature__ = inspect.signature(tool.forward)
gradio_inputs = []
for input_name, input_details in tool.inputs.items():
input_gradio_component_class = TYPE_TO_COMPONENT_CLASS_MAPPING[
input_details["type"]
]
new_component = input_gradio_component_class(label=input_name)
gradio_inputs.append(new_component)
output_gradio_componentclass = TYPE_TO_COMPONENT_CLASS_MAPPING[tool.output_type]
gradio_output = output_gradio_componentclass(label="Output")
gr.Interface(
fn=tool_forward,
inputs=gradio_inputs,
outputs=gradio_output,
title=tool.name,
article=ARTICLE_INTRO + "\n" + tool.description + "\n" + ARTICLE_OUTRO,
description=HEADER,
api_name=tool.name,
).launch()