8 KiB
Agents
Smolagents рдПрдХ experimental API рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдПрдЬреЗрдВрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ APIs рдпрд╛ underlying рдореЙрдбрд▓ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред
Agents рдФрд░ tools рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП introductory guide рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдкреЗрдЬ underlying рдХреНрд▓рд╛рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП API docs рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред
Agents
рд╣рдорд╛рд░реЗ рдПрдЬреЗрдВрдЯреНрд╕ [MultiStepAgent] рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░, рдлрд┐рд░ рдПрдХ рдЯреВрд▓ рдХреЙрд▓ рдФрд░ рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХреЙрдиреНрд╕реЗрдкреНрдЪреБрдЕрд▓ рдЧрд╛рдЗрдб рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВред
рд╣рдо рдореБрдЦреНрдп [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 рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐:
- рдпрд╣ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ
messagesрдХреЗ рд▓рд┐рдП messages format (List[Dict[str, str]]) рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХstrрд▓реМрдЯрд╛рддрд╛ рд╣реИред - рдпрд╣ рдЖрд░реНрдЧреБрдореЗрдВрдЯ
stop_sequencesрдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕реАрдХреНрд╡реЗрдВрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЕрдкрдиреЗ LLM рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ custom_model рдореЗрдердб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ messages рдХреА рдПрдХ рд╕реВрдЪреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдпреБрдХреНрдд .content рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХреЙрд▓реЗрдмрд▓ рдХреЛ рдПрдХ stop_sequences рдЖрд░реНрдЧреБрдореЗрдВрдЯ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдм рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рд╣реИред
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 рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗ рдЬрд┐рд╕рд╕реЗ рдЙрдЪрд┐рдд-рдлреЙрд░реНрдореЗрдЯреЗрдб рдПрдЬреЗрдВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдлреЛрд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
TransformersModel
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ TransformersModel рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рджрд┐рдП рдЧрдП model_id рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрд▓ transformers рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдХрд░ рдКрдкрд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
from smolagents import TransformersModel
model = TransformersModel(model_id="HuggingFaceTB/SmolLM-135M-Instruct")
print(model([{"role": "user", "content": "Ok!"}], stop_sequences=["great"]))
>>> What a
autodoc TransformersModel
InferenceClientModel
InferenceClientModel LLM рдХреЗ рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП HF Inference API рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░реИрдк рдХрд░рддрд╛ рд╣реИред
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))
>>> Of course! If you change your mind, feel free to reach out. Take care!
autodoc InferenceClientModel
LiteLLMModel
LiteLLMModel рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рд╕реЗ 100+ LLMs рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LiteLLM рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред
рдЖрдк рдореЙрдбрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ kwargs рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рддрдм рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╣рдо temperature рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
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 рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
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