Formatting
This commit is contained in:
parent
32d7bc5e06
commit
cb7e68f2f0
|
@ -3,7 +3,7 @@ from agents import tool, HfApiEngine, OpenAIEngine, AnthropicEngine
|
||||||
|
|
||||||
# Choose which LLM engine to use!
|
# Choose which LLM engine to use!
|
||||||
llm_engine = OpenAIEngine("gpt-4o")
|
llm_engine = OpenAIEngine("gpt-4o")
|
||||||
llm_engine = AnthropicEngine()
|
llm_engine = AnthropicEngine("claude-3-5-sonnet-20240620")
|
||||||
llm_engine = HfApiEngine("meta-llama/Llama-3.3-70B-Instruct")
|
llm_engine = HfApiEngine("meta-llama/Llama-3.3-70B-Instruct")
|
||||||
|
|
||||||
@tool
|
@tool
|
||||||
|
|
|
@ -23,8 +23,6 @@ from rich.panel import Panel
|
||||||
from rich.rule import Rule
|
from rich.rule import Rule
|
||||||
from rich.text import Text
|
from rich.text import Text
|
||||||
|
|
||||||
from transformers.utils import is_torch_available
|
|
||||||
|
|
||||||
from .utils import console, parse_code_blob, parse_json_tool_call, truncate_content
|
from .utils import console, parse_code_blob, parse_json_tool_call, truncate_content
|
||||||
from .types import AgentAudio, AgentImage
|
from .types import AgentAudio, AgentImage
|
||||||
from .default_tools.base import FinalAnswerTool
|
from .default_tools.base import FinalAnswerTool
|
||||||
|
@ -217,11 +215,6 @@ class BaseAgent:
|
||||||
if isinstance(tools, Toolbox):
|
if isinstance(tools, Toolbox):
|
||||||
self._toolbox = tools
|
self._toolbox = tools
|
||||||
if add_base_tools:
|
if add_base_tools:
|
||||||
if not is_torch_available():
|
|
||||||
raise ImportError(
|
|
||||||
"Using the base tools requires torch to be installed."
|
|
||||||
)
|
|
||||||
|
|
||||||
self._toolbox.add_base_tools(
|
self._toolbox.add_base_tools(
|
||||||
add_python_interpreter=(self.__class__ == JsonAgent)
|
add_python_interpreter=(self.__class__ == JsonAgent)
|
||||||
)
|
)
|
||||||
|
@ -398,21 +391,17 @@ class MultiStepAgent(BaseAgent):
|
||||||
tools: List[Tool],
|
tools: List[Tool],
|
||||||
llm_engine: Optional[Callable] = None,
|
llm_engine: Optional[Callable] = None,
|
||||||
system_prompt: Optional[str] = None,
|
system_prompt: Optional[str] = None,
|
||||||
tool_description_template: Optional[str] = None,
|
|
||||||
grammar: Optional[Dict[str, str]] = None,
|
grammar: Optional[Dict[str, str]] = None,
|
||||||
planning_interval: Optional[int] = None,
|
planning_interval: Optional[int] = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
if system_prompt is None:
|
if system_prompt is None:
|
||||||
system_prompt = CODE_SYSTEM_PROMPT
|
system_prompt = CODE_SYSTEM_PROMPT
|
||||||
if tool_description_template is None:
|
|
||||||
tool_description_template = DEFAULT_TOOL_DESCRIPTION_TEMPLATE
|
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
tools=tools,
|
tools=tools,
|
||||||
llm_engine=llm_engine,
|
llm_engine=llm_engine,
|
||||||
system_prompt=system_prompt,
|
system_prompt=system_prompt,
|
||||||
tool_description_template=tool_description_template,
|
|
||||||
grammar=grammar,
|
grammar=grammar,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
@ -775,7 +764,6 @@ class JsonAgent(MultiStepAgent):
|
||||||
tools: List[Tool],
|
tools: List[Tool],
|
||||||
llm_engine: Optional[Callable] = None,
|
llm_engine: Optional[Callable] = None,
|
||||||
system_prompt: Optional[str] = None,
|
system_prompt: Optional[str] = None,
|
||||||
tool_description_template: Optional[str] = None,
|
|
||||||
grammar: Optional[Dict[str, str]] = None,
|
grammar: Optional[Dict[str, str]] = None,
|
||||||
planning_interval: Optional[int] = None,
|
planning_interval: Optional[int] = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -784,13 +772,10 @@ class JsonAgent(MultiStepAgent):
|
||||||
llm_engine = HfApiEngine()
|
llm_engine = HfApiEngine()
|
||||||
if system_prompt is None:
|
if system_prompt is None:
|
||||||
system_prompt = JSON_SYSTEM_PROMPT
|
system_prompt = JSON_SYSTEM_PROMPT
|
||||||
if tool_description_template is None:
|
|
||||||
tool_description_template = DEFAULT_TOOL_DESCRIPTION_TEMPLATE
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
tools=tools,
|
tools=tools,
|
||||||
llm_engine=llm_engine,
|
llm_engine=llm_engine,
|
||||||
system_prompt=system_prompt,
|
system_prompt=system_prompt,
|
||||||
tool_description_template=tool_description_template,
|
|
||||||
grammar=grammar,
|
grammar=grammar,
|
||||||
planning_interval=planning_interval,
|
planning_interval=planning_interval,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -896,7 +881,6 @@ class ToolCallingAgent(MultiStepAgent):
|
||||||
tools: List[Tool],
|
tools: List[Tool],
|
||||||
llm_engine: Optional[Callable] = None,
|
llm_engine: Optional[Callable] = None,
|
||||||
system_prompt: Optional[str] = None,
|
system_prompt: Optional[str] = None,
|
||||||
tool_description_template: Optional[str] = None,
|
|
||||||
planning_interval: Optional[int] = None,
|
planning_interval: Optional[int] = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
|
@ -904,13 +888,10 @@ class ToolCallingAgent(MultiStepAgent):
|
||||||
llm_engine = HfApiEngine()
|
llm_engine = HfApiEngine()
|
||||||
if system_prompt is None:
|
if system_prompt is None:
|
||||||
system_prompt = TOOL_CALLING_SYSTEM_PROMPT
|
system_prompt = TOOL_CALLING_SYSTEM_PROMPT
|
||||||
if tool_description_template is None:
|
|
||||||
tool_description_template = DEFAULT_TOOL_DESCRIPTION_TEMPLATE
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
tools=tools,
|
tools=tools,
|
||||||
llm_engine=llm_engine,
|
llm_engine=llm_engine,
|
||||||
system_prompt=system_prompt,
|
system_prompt=system_prompt,
|
||||||
tool_description_template=tool_description_template,
|
|
||||||
planning_interval=planning_interval,
|
planning_interval=planning_interval,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
@ -986,7 +967,6 @@ class CodeAgent(MultiStepAgent):
|
||||||
tools: List[Tool],
|
tools: List[Tool],
|
||||||
llm_engine: Optional[Callable] = None,
|
llm_engine: Optional[Callable] = None,
|
||||||
system_prompt: Optional[str] = None,
|
system_prompt: Optional[str] = None,
|
||||||
tool_description_template: Optional[str] = None,
|
|
||||||
grammar: Optional[Dict[str, str]] = None,
|
grammar: Optional[Dict[str, str]] = None,
|
||||||
additional_authorized_imports: Optional[List[str]] = None,
|
additional_authorized_imports: Optional[List[str]] = None,
|
||||||
planning_interval: Optional[int] = None,
|
planning_interval: Optional[int] = None,
|
||||||
|
@ -997,13 +977,10 @@ class CodeAgent(MultiStepAgent):
|
||||||
llm_engine = HfApiEngine()
|
llm_engine = HfApiEngine()
|
||||||
if system_prompt is None:
|
if system_prompt is None:
|
||||||
system_prompt = CODE_SYSTEM_PROMPT
|
system_prompt = CODE_SYSTEM_PROMPT
|
||||||
if tool_description_template is None:
|
|
||||||
tool_description_template = DEFAULT_TOOL_DESCRIPTION_TEMPLATE
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
tools=tools,
|
tools=tools,
|
||||||
llm_engine=llm_engine,
|
llm_engine=llm_engine,
|
||||||
system_prompt=system_prompt,
|
system_prompt=system_prompt,
|
||||||
tool_description_template=tool_description_template,
|
|
||||||
grammar=grammar,
|
grammar=grammar,
|
||||||
planning_interval=planning_interval,
|
planning_interval=planning_interval,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -1092,7 +1069,9 @@ class CodeAgent(MultiStepAgent):
|
||||||
raise AgentParsingError(error_msg)
|
raise AgentParsingError(error_msg)
|
||||||
|
|
||||||
log_entry.tool_call = ToolCall(
|
log_entry.tool_call = ToolCall(
|
||||||
tool_name="python_interpreter", tool_arguments=code_action
|
name="python_interpreter",
|
||||||
|
arguments=code_action,
|
||||||
|
id=f"call_{len(self.logs)}",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Execute
|
# Execute
|
||||||
|
|
|
@ -24,7 +24,6 @@ import textwrap
|
||||||
from functools import lru_cache, wraps
|
from functools import lru_cache, wraps
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Callable, Dict, List, Optional, Union
|
from typing import Callable, Dict, List, Optional, Union
|
||||||
|
|
||||||
from huggingface_hub import (
|
from huggingface_hub import (
|
||||||
create_repo,
|
create_repo,
|
||||||
get_collection,
|
get_collection,
|
||||||
|
@ -34,7 +33,7 @@ from huggingface_hub import (
|
||||||
)
|
)
|
||||||
from huggingface_hub.utils import RepositoryNotFoundError
|
from huggingface_hub.utils import RepositoryNotFoundError
|
||||||
from packaging import version
|
from packaging import version
|
||||||
|
import logging
|
||||||
from transformers.utils import (
|
from transformers.utils import (
|
||||||
TypeHintParsingException,
|
TypeHintParsingException,
|
||||||
cached_file,
|
cached_file,
|
||||||
|
@ -43,11 +42,11 @@ from transformers.utils import (
|
||||||
is_torch_available,
|
is_torch_available,
|
||||||
)
|
)
|
||||||
from transformers.dynamic_module_utils import get_imports
|
from transformers.dynamic_module_utils import get_imports
|
||||||
|
|
||||||
from .types import ImageType, handle_agent_input_types, handle_agent_output_types
|
from .types import ImageType, handle_agent_input_types, handle_agent_output_types
|
||||||
from .utils import instance_to_source
|
from .utils import instance_to_source
|
||||||
from .tool_validation import validate_tool_attributes, MethodChecker
|
from .tool_validation import validate_tool_attributes, MethodChecker
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -395,6 +394,9 @@ class Tool:
|
||||||
token (`str`, *optional*):
|
token (`str`, *optional*):
|
||||||
The token to identify you on hf.co. If unset, will use the token generated when running
|
The token to identify you on hf.co. If unset, will use the token generated when running
|
||||||
`huggingface-cli login` (stored in `~/.huggingface`).
|
`huggingface-cli login` (stored in `~/.huggingface`).
|
||||||
|
trust_remote_code(`str`, *optional*, defaults to False):
|
||||||
|
This flags marks that you understand the risk of running remote code and that you trust this tool.
|
||||||
|
If not setting this to True, loading the tool from Hub will fail.
|
||||||
kwargs (additional keyword arguments, *optional*):
|
kwargs (additional keyword arguments, *optional*):
|
||||||
Additional keyword arguments that will be split in two: all arguments relevant to the Hub (such as
|
Additional keyword arguments that will be split in two: all arguments relevant to the Hub (such as
|
||||||
`cache_dir`, `revision`, `subfolder`) will be used when downloading the files for your tool, and the
|
`cache_dir`, `revision`, `subfolder`) will be used when downloading the files for your tool, and the
|
||||||
|
@ -802,12 +804,6 @@ def load_tool(
|
||||||
tool_class = getattr(tools_module, tool_class_name)
|
tool_class = getattr(tools_module, tool_class_name)
|
||||||
return tool_class(model_repo_id, token=token, **kwargs)
|
return tool_class(model_repo_id, token=token, **kwargs)
|
||||||
else:
|
else:
|
||||||
logger.warning_once(
|
|
||||||
f"You're loading a tool from the Hub from {model_repo_id}. Please make sure this is a source that you "
|
|
||||||
f"trust as the code within that tool will be executed on your machine. Always verify the code of "
|
|
||||||
f"the tools that you load. We recommend specifying a `revision` to ensure you're loading the "
|
|
||||||
f"code that you have checked."
|
|
||||||
)
|
|
||||||
return Tool.from_hub(
|
return Tool.from_hub(
|
||||||
task_or_repo_id,
|
task_or_repo_id,
|
||||||
model_repo_id=model_repo_id,
|
model_repo_id=model_repo_id,
|
||||||
|
|
Loading…
Reference in New Issue