Spaces:
Sleeping
Sleeping
| import inspect | |
| from langchain_core.tools import StructuredTool | |
| from typing import Optional | |
| from pathlib import Path | |
| # Example tools | |
| def add(a: float, b: float) -> float: | |
| """Add two numbers together.""" | |
| return a + b | |
| def multiply(a: float, b: float) -> float: | |
| """Multiply two numbers together.""" | |
| return a * b | |
| def divide(a: float, b: float) -> float: | |
| """Divide two numbers.""" | |
| return a / b | |
| def subtract(a: float, b: float) -> float: | |
| """Subtract two numbers.""" | |
| return a - b | |
| # Prompt creation | |
| def create_default_prompt( | |
| tools: list, | |
| system_prompt: Optional[str] = None, | |
| base_prompt: str = "original.txt", | |
| ) -> str: | |
| template_path = Path(__file__).parent.parent / "prompts" / base_prompt | |
| template = template_path.read_text() | |
| tool_strings = [] | |
| for t in tools: | |
| func = t.func if isinstance(t, StructuredTool) else t | |
| sig = inspect.signature(func) | |
| doc = (func.__doc__ or "").strip() | |
| tool_strings.append( | |
| f"def {func.__name__}{sig}:\n \"\"\"{doc}\"\"\"\n ..." | |
| ) | |
| tools_str = "\n\n".join(tool_strings) | |
| prompt = template.replace("{tools}", tools_str) | |
| if system_prompt: | |
| prompt = f"{system_prompt}\n\n{prompt}" | |
| return prompt | |
| if __name__ == "__main__": | |
| tools = [multiply, divide, subtract] | |
| print(create_default_prompt(tools, system_prompt="You are a coding agent.")) | |