Custom Agents
DuckDb Agent
Example
duckdb_agent.py
import json
from phi.agent.duckdb import DuckDbAgent
tables = [
{
"name": "movies",
"description": "Contains information about movies from IMDB.",
"path": "s3://phidata-public/demo_data/IMDB-Movie-Data.csv",
},
]
duckdb_agent = DuckDbAgent(
show_function_calls=True,
semantic_model=json.dumps({"tables": tables}, indent=4),
)
duckdb_agent.print_response("What is the average rating of movies?")
DuckDbAgent Params
Parameter | Type | Default | Description |
---|---|---|---|
name | str | "DuckDbAgent" | Name of the agent. |
semantic_model | str | None | Semantic model for the agent. Use this to describe the available tables, their description, data path and relations between tables. |
add_chat_history_to_messages | bool | True | If the chat history should be added to the messages. |
num_history_messages | int | 6 | Number of history messages to add to the response. |
followups | bool | False | If the DuckDbAgent is allowed to run followup queries. |
read_tool_call_history | bool | True | If the DuckDbAgent is allowed to read the tool call history. |
db_path | str | None | Path to the DuckDb database file. |
connection | DuckDBPyConnection | None | Provide an existing duckdb connection. |
init_commands | List[str] | None | Commands ran when the duckdb connection is initialized. |
read_only | bool | False | If the database is read-only. |
config | dict | None | Database config used to initialize the duckdb connection. |
run_queries | bool | True | If the DuckDbAgent is allowed to run queries. |
inspect_queries | bool | True | If the DuckDbAgent is allowed to inspect queries. |
create_tables | bool | True | If the DuckDbAgent is allowed to create tables. |
summarize_tables | bool | True | If the DuckDbAgent is allowed to summarize tables. |
export_tables | bool | True | If the DuckDbAgent is allowed to export tables. |
base_dir | Path | . | Where to save SQL files if needed. |
save_files | bool | True | If the DuckDbAgent is allowed to save SQL files. |
read_files | bool | False | If the DuckDbAgent is allowed to read SQL files. |
list_files | bool | False | If the DuckDbAgent is allowed to list SQL files. |
Agent Reference
DuckDbAgent
is a subclass of the Agent
class and has access to the same params
Parameter | Type | Default | Description |
---|---|---|---|
llm | LLM | - | LLM to use for this Agent |
introduction | str | - | Agent introduction. This is added to the chat history when a run is started. |
name | str | - | Agent name |
agent_data | Dict[str, Any] | - | Metadata associated with this agent |
run_id | str | - | Run UUID (autogenerated if not set) |
run_name | str | - | Run name |
run_data | Dict[str, Any] | - | Metadata associated with this run |
user_id | str | - | ID of the user participating in this run |
user_data | Dict[str, Any] | - | Metadata associated the user participating in this run |
memory | AgentMemory | AgentMemory() | Agent Memory |
add_chat_history_to_messages | bool | False | Add chat history to the messages sent to the LLM. |
add_chat_history_to_prompt | bool | False | Add chat history to the prompt sent to the LLM. |
num_history_messages | int | 6 | Number of previous messages to add to prompt or messages sent to the LLM. |
knowledge_base | AgentKnowledge | - | Agent Knowledge Base |
add_references_to_prompt | bool | False | Enable RAG by adding references from the knowledge base to the prompt. |
storage | AgentStorage | - | Agent Storage |
db_row | AgentRun | - | AgentRun from the database: DO NOT SET MANUALLY |
tools | List[Union[Tool, ToolRegistry, Callable, Dict, Function]] | - | A list of tools provided to the LLM. Tools are functions the model may generate JSON inputs for. If you provide a dict, it is not called by the model. |
show_tool_calls | bool | False | Show tool calls in LLM messages. |
tool_call_limit | int | - | Maximum number of tool calls allowed. |
tool_choice | Union[str, Dict[str, Any]] | - | Controls which (if any) tool is called by the model. "none" means the model will not call a tool and instead generates a message. "auto" means the model can pick between generating a message or calling a tool. Specifying a particular function via {"type": "function", "function": {"name": "my_function"}} forces the model to call that tool. "none" is the default when no tools are present. "auto" is the default if tools are present. |
read_chat_history | bool | False | If True, adds a tool that allows the LLM to get the chat history. |
search_knowledge | bool | False | If True, adds a tool that allows the LLM to search the knowledge base. |
update_knowledge | bool | False | If True, adds a tool that allows the LLM to update the knowledge base. |
read_tool_call_history | bool | False | If True, adds a tool that allows the LLM to get the tool call history. |
use_tools | bool | False | Allow the agent to use tools |
additional_messages | List[Union[Dict, Message]] | - | List of additional messages added to the messages list after the system prompt. Use these for few-shot learning or to provide additional context to the LLM. |
system_prompt | str | - | Provide the system prompt as a string |
system_prompt_template | PromptTemplate | - | Provide the system prompt as a PromptTemplate |
build_default_system_prompt | Callable[..., Optional[str]] | - | If True, build a default system prompt using instructions and extra_instructions |
description | str | - | Agent description for the default system prompt |
task | str | - | Agent task |
instructions | List[str] | - | List of instructions for the default system prompt |
extra_instructions | List[str] | - | List of extra_instructions for the default system prompt Use these when you want to use the default prompt but also add some extra instructions |
expected_output | str | - | Expected output added to the system prompt |
add_to_system_prompt | str | - | Add a string to the end of the default system prompt |
add_knowledge_base_instructions | bool | True | If True, add instructions for using the knowledge base to the default system prompt if knowledge base is provided |
prevent_hallucinations | bool | False | If True, add instructions for letting the user know that the agent does not know the answer |
prevent_prompt_injection | bool | False | If True, add instructions to prevent prompt injection attacks |
limit_tool_access | bool | False | If True, add instructions for limiting tool access to the default system prompt if tools are provided |
add_datetime_to_instructions | bool | False | If True, add the current datetime to the prompt to give the agent a sense of time This allows for relative times like "tomorrow" to be used in the prompt |
markdown | bool | False | If markdown=true, formats the output using markdown |
user_prompt | Union[List[Dict], str] | - | Provides the user prompt as a string. Note: this will ignore the input message provided to the run function |
user_prompt_template | PromptTemplate | - | Provides the user prompt as a PromptTemplate |
build_default_user_prompt | bool | True | If True, build a default user prompt using references and chat history |
references_function | Callable[..., Optional[str]] | - | Function to build references for the default user_prompt . This function, if provided, is called when add_references_to_prompt is True |
references_format | Literal['json', 'yaml'] | json | Format of the references |
chat_history_function | Callable[..., Optional[str]] | - | Function to build the chat_history for the default user_prompt . This function, if provided, is called when add_chat_history_to_prompt is True |
output_model | Union[str, List, Type[BaseModel]] | - | Provide an output model for the responses |
parse_output | bool | True | If True, the output is converted into the output_model (pydantic model or json dict) |
output | Any | - | Final LLM response i.e. the final output of this agent |
save_output_to_file | Str | - | Save the output to a file |
task_data | Dict[str, Any] | - | Metadata associated with the agent tasks |
team | List['Agent'] | - | Agent team. |
role | str | - | When the agent is part of a team, this is the role of the agent in the team |
add_delegation_instructions | bool | True | Add instructions for delegating tasks to another agents |
debug_mode | bool | False | If True, show debug logs |
monitoring | bool | False | If True, logs Agent runs on phidata.com |