일반 소개
스몰에이전트는 HuggingFace에서 개발한 경량 지능형 에이전트 라이브러리로, AI 에이전트 시스템의 개발 프로세스를 간소화하는 데 중점을 두고 있습니다. 이 프로젝트는 핵심 코드가 약 1,000줄에 불과한 깔끔한 디자인 철학으로 유명하지만 강력한 기능 통합 기능을 제공합니다. 가장 주목할 만한 기능은 코드 실행 에이전트를 지원하여 AI가 파이썬 코드를 작성하여 다양한 도구를 호출하고 작업을 직접 완료할 수 있도록 하는 것으로, 스몰라전트는 허깅페이스 허브, OpenAI 및 Anthropic의 모델 등을 포함한 광범위한 주류 빅 언어 모델을 지원합니다. 특히 주목할 만한 점은 이 프레임워크가 보안을 충분히 고려하여 안전한 Python 인터프리터와 샌드박스 환경을 제공함으로써 코드 실행으로 인한 위험을 효과적으로 줄인다는 점입니다. 오픈 소스 프로젝트인 스몰에이전트는 기본적인 에이전트 개발 프레임워크를 제공할 뿐만 아니라 허깅페이스 허브를 통해 도구 공유 및 로딩을 지원하여 개발자가 보다 쉽게 지능형 에이전트 시스템을 구축하고 배포할 수 있도록 돕습니다.


기능 목록
- 약 1000줄의 코드에 불과한 핵심 로직으로 구성된 경량 에이전트 개발 프레임워크
- 여러 대규모 언어 모델 통합 지원(HuggingFace, OpenAI, Anthropic 등)
- 코드 실행 에이전트 기능, Python 코드를 통한 도구 직접 호출 지원
- 안전한 코드 실행 환경 및 샌드박스 메커니즘 제공
- 허깅페이스 허브를 통한 도구 공유 및 로드 지원
- 신속한 개발 및 배포를 위한 간단하고 직관적인 API 설계
- 전체 문서 지원 및 샘플 코드
- 사용자 지정 도구 개발 및 통합 지원
- 사전 구축된 다양한 도구 제공(예: 검색 도구 DuckDuckGoSearchTool)
도움말 사용
1. 설치 단계
먼저 pip를 통해 스몰에이전트 패키지를 설치해야 합니다:
pip install smolagents
2. 기본 사용법
2.1 간단한 에이전트 만들기
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
# 创建代理实例
agent = CodeAgent(
tools=[DuckDuckGoSearchTool()], # 添加所需工具
model=HfApiModel() # 指定使用的模型
)
# 运行代理
response = agent.run("你的问题或任务描述")
2.2 보안 구성
코드 실행의 보안을 보장하기 위해 스몰에이전트는 두 가지 보안 메커니즘을 제공합니다:
- 보안 Python 인터프리터: 사용 가능한 모듈과 기능을 제한하여 시스템 보호하기
- 샌드박스 환경: 격리된 실행 환경 제공
보안 통역사를 사용하는 예입니다:
from smolagents import CodeAgent, SecureInterpreter
agent = CodeAgent(
tools=[your_tools],
interpreter=SecureInterpreter()
)
3. 고급 기능
3.1 맞춤형 도구 개발
개발자는 자신만의 툴 클래스를 만들 수 있습니다:
from smolagents import BaseTool
class MyCustomTool(BaseTool):
def __init__(self):
super().__init__()
def __call__(self, *args, **kwargs):
# 实现工具的具体功能
pass
3.2 허깅페이스 허브와의 통합
허브에서 도구를 쉽게 로드하고 공유할 수 있습니다:
# 从Hub加载工具
from smolagents import load_tool
tool = load_tool("tool_name", from_hub=True)
# 分享工具到Hub
tool.push_to_hub("your-username/tool-name")
4. 모범 사례 권장 사항
- 코드 실행 시 항상 보안 인터프리터 또는 샌드박스 환경을 사용하세요.
- 성능과 비용을 고려하여 필요에 맞는 모델을 선택하세요.
- 기능 중복을 피하기 위한 도구 세트의 합리적 구성
- 최신 기능 및 보안 수정을 위해 종속성 패키지를 정기적으로 업데이트하세요.
- 문서와 샘플 코드를 활용하여 개발을 가속화하세요.
5. 일반적인 문제 해결
- 모델 로딩 문제가 발생하면 네트워크 연결 및 API 키 구성을 확인하세요.
- 코드 실행 오류, 보안 제한 사항 확인, 보안 정책 조정이 필요할 수 있습니다.
- 도구 가져오기에 실패했습니다. 모든 종속성이 올바르게 설치되었는지 확인하세요.
스몰래그먼트의 주요 프롬프트 콘텐츠
참조: https://github.com/huggingface/smolagents/blob/e57f4f55ef506948d2e17b320ddc2a98b282eacf/src/smolagents/prompts.py
- 도구 호출 시스템 프롬프트(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.
- 코드 실행 시스템 프롬프트(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.
- 팩트 수집 팁(시스템_프롬프트_팩트)
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.
- 프로그래밍 프롬프트(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.
- 팩트 업데이트 알림(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
- 계획된 업데이트 프롬프트(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.
- 관리되는 상담원 프롬프트(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):
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...