smolagents-audit/docs/source/hi/reference/agents.md
2025-10-16 15:10:09 +02:00

147 lines
8 KiB
Markdown

# Agents
<Tip warning={true}>
Smolagents рдПрдХ experimental API рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдПрдЬреЗрдВрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ APIs рдпрд╛ underlying рдореЙрдбрд▓ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред
</Tip>
Agents рдФрд░ tools рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП [introductory guide](../index) рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рдпрд╣ рдкреЗрдЬ underlying рдХреНрд▓рд╛рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП API docs рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред
## Agents
рд╣рдорд╛рд░реЗ рдПрдЬреЗрдВрдЯреНрд╕ [`MultiStepAgent`] рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░, рдлрд┐рд░ рдПрдХ рдЯреВрд▓ рдХреЙрд▓ рдФрд░ рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред [рдЗрд╕ рдХреЙрдиреНрд╕реЗрдкреНрдЪреБрдЕрд▓ рдЧрд╛рдЗрдб](../conceptual_guides/react) рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВред
рд╣рдо рдореБрдЦреНрдп [`Agent`] рдХреНрд▓рд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдЬреЗрдВрдЯреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
- [`CodeAgent`] рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдЬреЗрдВрдЯ рд╣реИ, рдпрд╣ рдЕрдкрдиреЗ рдЯреВрд▓ рдХреЙрд▓реНрд╕ рдХреЛ Python рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред
- [`ToolCallingAgent`] рдЕрдкрдиреЗ рдЯреВрд▓ рдХреЙрд▓реНрд╕ рдХреЛ JSON рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ `model` рдФрд░ рдЯреВрд▓реНрд╕ рдХреА рд╕реВрдЪреА `tools` рдЖрд░реНрдЧреБрдореЗрдВрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
### Agents рдХреА рдХреНрд▓рд╛рд╕реЗрдЬ
[[autodoc]] MultiStepAgent
[[autodoc]] CodeAgent
[[autodoc]] ToolCallingAgent
### stream_to_gradio
[[autodoc]] stream_to_gradio
### GradioUI
[[autodoc]] GradioUI
## рдореЙрдбрд▓реНрд╕
рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЕрдкрдиреЗ рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА `model` рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐:
1. рдпрд╣ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ `messages` рдХреЗ рд▓рд┐рдП [messages format](./chat_templating) (`List[Dict[str, str]]`) рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ `str` рд▓реМрдЯрд╛рддрд╛ рд╣реИред
2. рдпрд╣ рдЖрд░реНрдЧреБрдореЗрдВрдЯ `stop_sequences` рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕реАрдХреНрд╡реЗрдВрд╕ рд╕реЗ *рдкрд╣рд▓реЗ* рдЖрдЙрдЯрдкреБрдЯ рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЕрдкрдиреЗ LLM рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ `custom_model` рдореЗрдердб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ [messages](./chat_templating) рдХреА рдПрдХ рд╕реВрдЪреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдпреБрдХреНрдд .content рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХреЙрд▓реЗрдмрд▓ рдХреЛ рдПрдХ `stop_sequences` рдЖрд░реНрдЧреБрдореЗрдВрдЯ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдм рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рд╣реИред
```python
from huggingface_hub import login, InferenceClient
login("<YOUR_HUGGINGFACEHUB_API_TOKEN>")
model_id = "meta-llama/Llama-3.3-70B-Instruct"
client = InferenceClient(model=model_id)
def custom_model(messages, stop_sequences=["Task"]):
response = client.chat_completion(messages, stop=stop_sequences, max_tokens=1000)
answer = response.choices[0].message
return answer
```
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, `custom_model` рдПрдХ `grammar` рдЖрд░реНрдЧреБрдореЗрдВрдЯ рднреА рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдПрдЬреЗрдВрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рдПрдХ `grammar` рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЖрд░реНрдЧреБрдореЗрдВрдЯ рдореЙрдбрд▓ рдХреЗ рдХреЙрд▓реНрд╕ рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд `grammar` рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрд╛рдХрд┐ [constrained generation](https://huggingface.co/docs/text-generation-inference/conceptual/guidance) рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗ рдЬрд┐рд╕рд╕реЗ рдЙрдЪрд┐рдд-рдлреЙрд░реНрдореЗрдЯреЗрдб рдПрдЬреЗрдВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдлреЛрд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
### TransformersModel
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ `TransformersModel` рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рджрд┐рдП рдЧрдП model_id рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрд▓ `transformers` рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдХрд░ рдКрдкрд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
```python
from smolagents import TransformersModel
model = TransformersModel(model_id="HuggingFaceTB/SmolLM-135M-Instruct")
print(model([{"role": "user", "content": "Ok!"}], stop_sequences=["great"]))
```
```text
>>> What a
```
[[autodoc]] TransformersModel
### InferenceClientModel
`InferenceClientModel` LLM рдХреЗ рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП [HF Inference API](https://huggingface.co/docs/api-inference/index) рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░реИрдк рдХрд░рддрд╛ рд╣реИред
```python
from smolagents import InferenceClientModel
messages = [
{"role": "user", "content": "Hello, how are you?"},
{"role": "assistant", "content": "I'm doing great. How can I help you today?"},
{"role": "user", "content": "No need to help, take it easy."},
]
model = InferenceClientModel()
print(model(messages))
```
```text
>>> Of course! If you change your mind, feel free to reach out. Take care!
```
[[autodoc]] InferenceClientModel
### LiteLLMModel
`LiteLLMModel` рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рд╕реЗ 100+ LLMs рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [LiteLLM](https://www.litellm.ai/) рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред
рдЖрдк рдореЙрдбрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ kwargs рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рддрдм рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╣рдо `temperature` рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
```python
from smolagents import LiteLLMModel
messages = [
{"role": "user", "content": "Hello, how are you?"},
{"role": "assistant", "content": "I'm doing great. How can I help you today?"},
{"role": "user", "content": "No need to help, take it easy."},
]
model = LiteLLMModel(model_id="anthropic/claude-3-5-sonnet-latest", temperature=0.2, max_tokens=10)
print(model(messages))
```
[[autodoc]] LiteLLMModel
### OpenAiModel
рдпрд╣ рдХреНрд▓рд╛рд╕ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА OpenAIServer рдХрдореНрдкреИрдЯрд┐рдмрд▓ рдореЙрдбрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рджреЗрддреА рд╣реИред
рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкреЙрдЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `api_base` url рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
```py
import os
from smolagents import OpenAIModel
model = OpenAIModel(
model_id="gpt-4o",
api_base="https://api.openai.com/v1",
api_key=os.environ["OPENAI_API_KEY"],
)
```
## Prompts
[[autodoc]] smolagents.agents.PromptTemplates
[[autodoc]] smolagents.agents.PlanningPromptTemplate
[[autodoc]] smolagents.agents.ManagedAgentPromptTemplate
[[autodoc]] smolagents.agents.FinalAnswerPromptTemplate