|
|
from smolagents import CodeAgent, tool, InferenceClientModel, WebSearchTool, load_tool, PromptTemplates, Tool, FinalAnswerTool |
|
|
from smolagents import PromptTemplates, PlanningPromptTemplate, FinalAnswerPromptTemplate, ManagedAgentPromptTemplate |
|
|
|
|
|
from my_tool_reverse_string import ReverseStringTool |
|
|
from my_tool_image_load import ImageLoadTool |
|
|
from my_tool_chess_board import ChessBoard |
|
|
from my_tool_fen import FENTool |
|
|
from my_tool_chess_analysis import ChessAnalysisTool |
|
|
|
|
|
|
|
|
task_id = "cca530fc-4052-43b2-b130-b30968d8aa44" |
|
|
|
|
|
MODEL_REASONING = "Qwen/Qwen2.5-Coder-32B-Instruct" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROMPT_TEMPLATES = PromptTemplates( |
|
|
system_prompt=""" |
|
|
You are a general AI assistant. |
|
|
|
|
|
Answer the following questions as best you can. |
|
|
|
|
|
Describe your initial plan as a set of bullet points. |
|
|
Each bullet point should describe in one sentence an action which is to be taken in this step. |
|
|
Do NOT provide hypothetical examples for the final answer. |
|
|
|
|
|
Use the tools provided, and only those which are necessary to answer the question. |
|
|
If you are going to use a tool, describe in detail how you are going |
|
|
to use that particular tool and explain parameters used to invoke the tool. |
|
|
|
|
|
Tools provided : |
|
|
* _my_image_load : load an image for given task_id, available arguments: task_id , |
|
|
|
|
|
Use <code></code> examples as here |
|
|
https://github.com/huggingface/smolagents/blob/main/src/smolagents/vision_web_browser.py |
|
|
|
|
|
* _my_chess_board : process an image and extract list of chess pieces, available arguments: img , |
|
|
* _my_fen_tool : convert list of chess pieces into FEN notation, available arguments: chest_pieces , |
|
|
* _my_chess_analysis : analyze chess position provided in FEN notation and provide best move, |
|
|
available arguments: fen, player_color |
|
|
* _my_reverse_string : reverse a string, available arguments: input_str , |
|
|
|
|
|
YOUR FINAL ANSWER should be a number OR as few words as possible OR a comma separated list of |
|
|
numbers and/or strings. |
|
|
If you are asked for a number, don’t use comma to write your number neither use units such as $ or percent |
|
|
sign unless specified otherwise. |
|
|
If you are asked for a string, don’t use articles, neither abbreviations (e.g. for cities), and write the digits in |
|
|
plain text unless specified otherwise. |
|
|
If you are asked for a comma separated list, apply the above rules depending of whether the element to be put |
|
|
in the list is a number or a string. |
|
|
|
|
|
Report your answer with the following template: FINAL ANSWER: [YOUR FINAL ANSWER]. |
|
|
|
|
|
""", |
|
|
|
|
|
planning=PlanningPromptTemplate( |
|
|
initial_plan=""" |
|
|
|
|
|
""", |
|
|
update_plan_pre_messages=""" |
|
|
|
|
|
""", |
|
|
update_plan_post_messages=""" |
|
|
|
|
|
""", |
|
|
), |
|
|
managed_agent=ManagedAgentPromptTemplate(task="", report=""), |
|
|
final_answer=FinalAnswerPromptTemplate( |
|
|
pre_messages="", |
|
|
post_messages=""" |
|
|
|
|
|
""" |
|
|
), |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
question = ("How many studio albums were published by Mercedes Sosa between 2000 and 2009 (included)? You can use the " |
|
|
"latest " |
|
|
"2022 version of english wikipedia.") |
|
|
|
|
|
chess_board_model_name = "my_chess_pieces_recognition.pth" |
|
|
chess_board_model_dir = "/mnt/c/Users/krzsa/IdeaProjects/Agents-Course-Assignment/saved_models" |
|
|
|
|
|
reasoning_agent = CodeAgent( |
|
|
name="CourseAssistant", |
|
|
description="General AI Assistant", |
|
|
tools=[ |
|
|
ImageLoadTool(), |
|
|
FinalAnswerTool(), |
|
|
ReverseStringTool(), |
|
|
ChessBoard(chess_board_model_name, chess_board_model_dir), |
|
|
FENTool(), |
|
|
ChessAnalysisTool(), |
|
|
WebSearchTool() |
|
|
], |
|
|
model=InferenceClientModel(model_id=MODEL_REASONING), |
|
|
planning_interval=3, |
|
|
prompt_templates=PROMPT_TEMPLATES, |
|
|
managed_agents=[], |
|
|
additional_authorized_imports=[ |
|
|
"PIL", |
|
|
"chess", |
|
|
"matplotlib", |
|
|
"matplotlib.pyplot", |
|
|
"stockfish", |
|
|
"my_chess_board_tool", |
|
|
"my_fen_tool", |
|
|
"my_image_load", |
|
|
"my_reverse_string", |
|
|
"my_chess_analysis_tool" |
|
|
], |
|
|
) |
|
|
|
|
|
reasoning_agent.run(question) |