Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

Smolagents: projeto de código aberto para desenvolvimento rápido de inteligências de IA e construção leve de inteligências

Introdução geral

Smolagents é uma biblioteca de agente inteligente leve desenvolvida pela HuggingFace que se concentra em simplificar o processo de desenvolvimento de sistemas de agente de IA. O projeto é conhecido por sua filosofia de design limpo, com um código principal de apenas cerca de 1.000 linhas, mas oferece recursos avançados de integração de recursos. Seu recurso mais notável é o suporte a agentes de execução de código, permitindo que a IA invoque várias ferramentas e conclua tarefas diretamente escrevendo código Python. O Smolagents oferece suporte a uma ampla variedade de modelos de linguagem grande e convencional, incluindo aqueles acessíveis por meio do HuggingFace Hub, modelos do OpenAI e do Anthropic, entre outros. Vale a pena mencionar, em especial, que a estrutura levou em consideração a segurança, fornecendo um intérprete Python seguro e um ambiente de sandbox, reduzindo efetivamente o risco que a execução do código pode trazer. Como um projeto de código aberto, o Smolagents não apenas fornece uma estrutura básica de desenvolvimento de agentes, mas também oferece suporte a ferramentas de compartilhamento e carregamento por meio do HuggingFace Hub, permitindo que os desenvolvedores criem e implantem sistemas de agentes inteligentes com mais facilidade.


 

 

Lista de funções

  • Estrutura leve de desenvolvimento de agentes com lógica central de apenas cerca de 1.000 linhas de código
  • Suporte para várias integrações de modelos de linguagem grandes (HuggingFace, OpenAI, Anthropic, etc.)
  • Função de agente de execução de código, suporte para invocação direta de ferramentas por meio de código Python
  • Fornecer um ambiente de execução de código seguro e um mecanismo de sandboxing
  • Suporte para ferramentas de compartilhamento e carregamento via HuggingFace Hub
  • Design de API simples e intuitivo para desenvolvimento e implantação rápidos
  • Suporte completo à documentação e código de amostra
  • Suporte para desenvolvimento e integração de ferramentas personalizadas
  • Fornece uma variedade de ferramentas pré-criadas (por exemplo, a ferramenta de pesquisa DuckDuckGoSearchTool)

 

Usando a Ajuda

1. etapas de instalação

Primeiro, você precisa instalar o pacote Smolagents via pip:

pip install smolagents

2. uso básico

2.1 Criação de um agente simples

from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
# 创建代理实例
agent = CodeAgent(
tools=[DuckDuckGoSearchTool()],  # 添加所需工具
model=HfApiModel()  # 指定使用的模型
)
# 运行代理
response = agent.run("你的问题或任务描述")

2.2 Configuração de segurança

Para garantir a segurança da execução do código, a Smolagents oferece dois mecanismos de segurança:

  • Interpretador Python seguro: protegendo o sistema limitando os módulos e as funções disponíveis
  • Ambiente sandbox: fornece um ambiente de execução isolado

Exemplo de uso de um intérprete seguro:

from smolagents import CodeAgent, SecureInterpreter
agent = CodeAgent(
tools=[your_tools],
interpreter=SecureInterpreter()
)

3. funções avançadas

3.1 Desenvolvimento de ferramentas personalizadas

Os desenvolvedores podem criar suas próprias classes de ferramentas:

from smolagents import BaseTool
class MyCustomTool(BaseTool):
def __init__(self):
super().__init__()
def __call__(self, *args, **kwargs):
# 实现工具的具体功能
pass

3.2 Integração com o HuggingFace Hub

As ferramentas podem ser facilmente carregadas e compartilhadas a partir do Hub:

# 从Hub加载工具
from smolagents import load_tool
tool = load_tool("tool_name", from_hub=True)
# 分享工具到Hub
tool.push_to_hub("your-username/tool-name")

4. recomendações de melhores práticas

  1. Sempre use um interpretador seguro ou um ambiente de sandbox para a execução do código
  2. Escolha o modelo certo para suas necessidades, considerando o desempenho e o custo
  3. Organização racional do conjunto de ferramentas para evitar a duplicação de funcionalidades
  4. Atualize regularmente os pacotes de dependência para obter os recursos e as correções de segurança mais recentes
  5. Aproveite a documentação e o código de amostra para acelerar o desenvolvimento

5. resolução de problemas comuns

  • Se você encontrar problemas de carregamento de modelos, verifique a conectividade de rede e as configurações de chave de API
  • Erro de execução de código, verificação de restrições de segurança, talvez seja necessário ajustar a política de segurança
  • Falha na importação da ferramenta, verifique se todas as dependências estão instaladas corretamente

 

Conteúdo do Key Prompt em Smolagents

Referência: https://github.com/huggingface/smolagents/blob/e57f4f55ef506948d2e17b320ddc2a98b282eacf/src/smolagents/prompts.py

  1. Prompt do sistema de chamada de ferramenta (TOOL_CALLING_SYSTEM_PROMPT)
You are an expert assistant who can solve any task using tool calls. You will be given a task to solve as best you can.
To do so, you have been given access to the following tools: {{tool_names}}
The tool call you write is an action: after the tool is executed, you will get the result of the tool call as an "observation".
This Action/Observation can repeat N times, you should take several steps when needed.
You can use the result of the previous action as input for the next action.
The observation will always be a string: it can represent a file, like "image_1.jpg".
Then you can use it as input for the next action. You can do it for instance as follows:
Observation: "image_1.jpg"
Action:
{
"tool_name": "image_transformer",
"tool_arguments": {"image": "image_1.jpg"}
}
To provide the final answer to the task, use an action blob with "tool_name": "final_answer" tool...
[示例部分省略]
Here are the rules you should always follow to solve your task:
1. ALWAYS provide a tool call, else you will fail.
2. Always use the right arguments for the tools. Never use variable names as the action arguments, use the value instead.
3. Call a tool only when needed: do not call the search agent if you do not need information, try to solve the task yourself.
4. Never re-do a tool call that you previously did with the exact same parameters.
Now Begin! If you solve the task correctly, you will receive a reward of $1,000,000.
  1. Prompt do sistema de execução de código (CODE_SYSTEM_PROMPT)
You are an expert assistant who can solve any task using code blobs. You will be given a task to solve as best you can.
To do so, you have been given access to a list of tools: these tools are basically Python functions which you can call with code.
To solve the task, you must plan forward to proceed in a series of steps, in a cycle of 'Thought:', 'Code:', and 'Observation:' sequences.
At each step, in the 'Thought:' sequence, you should first explain your reasoning towards solving the task and the tools that you want to use.
Then in the 'Code:' sequence, you should write the code in simple Python. The code sequence must end with '<end_code>' sequence.
[示例部分省略]
Here are the rules you should always follow to solve your task:
1. Always provide a 'Thought:' sequence, and a 'Code:\n```py' sequence ending with '```<end_code>' sequence, else you will fail.
2. Use only variables that you have defined!
3. Always use the right arguments for the tools.
4. Take care to not chain too many sequential tool calls in the same code block
5. Call a tool only when needed, and never re-do a tool call that you previously did with the exact same parameters.
6. Don't name any new variable with the same name as a tool
7. Never create any notional variables in our code
8. You can use imports in your code, but only from the following list of modules: {{authorized_imports}}
9. The state persists between code executions
10. Don't give up! You're in charge of solving the task, not providing directions to solve it.
  1. Dicas de coleta de fatos (SYSTEM_PROMPT_FACTS)
Below I will present you a task.
You will now build a comprehensive preparatory survey of which facts we have at our disposal and which ones we still need.
To do so, you will have to read the task and identify things that must be discovered in order to successfully complete it.
Don't make any assumptions. For each item, provide a thorough reasoning. Here is how you will structure this survey:
### 1. Facts given in the task
List here the specific facts given in the task that could help you (there might be nothing here).
### 2. Facts to look up
List here any facts that we may need to look up.
Also list where to find each of these, for instance a website, a file...
### 3. Facts to derive
List here anything that we want to derive from the above by logical reasoning, for instance computation or simulation.
  1. Prompt de programação (SYSTEM_PROMPT_PLAN)
You are a world expert at making efficient plans to solve any task using a set of carefully crafted tools.
Now for the given task, develop a step-by-step high-level plan taking into account the above inputs and list of facts.
This plan should involve individual tasks based on the available tools, that if executed correctly will yield the correct answer.
Do not skip steps, do not add any superfluous steps. Only write the high-level plan, DO NOT DETAIL INDIVIDUAL TOOL CALLS.
After writing the final step of the plan, write the '\n<end_plan>' tag and stop there.
  1. Alerta de atualização de fatos (SYSTEM_PROMPT_FACTS_UPDATE)
You are a world expert at gathering known and unknown facts based on a conversation.
Below you will find a task, and a history of attempts made to solve the task. You will have to produce a list of these:
### 1. Facts given in the task
### 2. Facts that we have learned
### 3. Facts still to look up
### 4. Facts still to derive
  1. Prompt de atualização planejada (SYSTEM_PROMPT_PLAN_UPDATE)
You are a world expert at making efficient plans to solve any task using a set of carefully crafted tools.
You have been given a task:
```{task}```
Find below the record of what has been tried so far to solve it. Then you will be asked to make an updated plan to solve the task.
If the previous tries so far have met some success, you can make an updated plan based on these actions.
If you are stalled, you can make a completely new plan starting from scratch.
  1. Prompt do agente gerenciado (MANAGED_AGENT_PROMPT)
You're a helpful agent named '{name}'.
You have been submitted this task by your manager.
---
Task:
{task}
---
You're helping your manager solve a wider task: so make sure to not provide a one-line answer, but give as much information as possible to give them a clear understanding of the answer.
Your final_answer WILL HAVE to contain these parts:
### 1. Task outcome (short version):
### 2. Task outcome (extremely detailed version):
### 3. Additional context (if relevant):
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Smolagents: projeto de código aberto para desenvolvimento rápido de inteligências de IA e construção leve de inteligências
pt_BRPortuguês do Brasil