smolagents-audit/docs/source/hi/examples/rag.md
2025-06-23 15:40:13 +02:00

141 lines
14 KiB
Markdown

# рдПрдЬреЗрдВрдЯрд┐рдХ RAG
[[open-in-colab]]
рд░рд┐рдЯреНрд░реАрд╡рд▓-рдСрдЧрдореЗрдВрдЯреЗрдб-рдЬрдирд░реЗрд╢рди (RAG) рд╣реИ "рдПрдХ рдпреВрдЬрд░ рдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП LLM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдЙрддреНрддрд░ рдХреЛ рдПрдХ рдиреЙрд▓реЗрдЬ рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд░рдирд╛"ред рдЗрд╕рдореЗрдВ рд╡реИрдирд┐рд▓рд╛ рдпрд╛ рдлрд╛рдЗрди-рдЯреНрдпреВрдиреНрдб LLM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ: рдХреБрдЫ рдирд╛рдо рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрддреНрддрд░ рдХреЛ рд╕рддреНрдп рддрдереНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рдмрд╛рддреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ LLM рдХреЛ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреНрдЮрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдиреЙрд▓реЗрдЬ рдмреЗрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╕реВрдХреНрд╖реНрдо рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡реИрдирд┐рд▓рд╛ RAG рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпреЗ рджреЛ:
- рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдЯреНрд░реАрд╡рд▓ рд╕реНрдЯреЗрдк рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдЦрд░рд╛рдм рд╣реИрдВ, рддреЛ рдЬрдирд░реЗрд╢рди рднреА рдмрджрд▓реЗ рдореЗрдВ рдЦрд░рд╛рдм рд╣реЛрдЧрд╛ред
- рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕рдорд╛рдирддрд╛ рдХреА рдЧрдгрдирд╛ рдпреВрдЬрд░ рдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдЬрд░ рдХрд╛ рдкреНрд░рд╢реНрди рдЕрдХреНрд╕рд░ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рд╕рд╣реА рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕реНрд╡рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд╕рдорд╛рдирддрд╛ рд╕реНрдХреЛрд░ рдЕрдиреНрдп рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рд╢реНрдирд╡рд╛рдЪрдХ рд╕реНрд╡рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЪреВрдХрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИред
рд╣рдо рдПрдХ RAG рдПрдЬреЗрдВрдЯ рдмрдирд╛рдХрд░ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдмрд╣реБрдд рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдПрдХ рд░рд┐рдЯреНрд░реАрд╡рд░ рдЯреВрд▓ рд╕реЗ рд▓реИрд╕ рдПрдЬреЗрдВрдЯ!
рдпрд╣ рдПрдЬреЗрдВрдЯ рдХрд░реЗрдЧрд╛: тЬЕ рд╕реНрд╡рдпрдВ рдХреНрд╡реЗрд░реА рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ тЬЕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдкреБрдирдГ-рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЙрдиреНрдирдд RAG рддрдХрдиреАрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП!
- рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЦреЛрдЬ рдореЗрдВ рд╕реАрдзреЗ рдпреВрдЬрд░ рдХреНрд╡реЗрд░реА рдХрд╛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдЬреЗрдВрдЯ рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдВрджрд░реНрдн рд╡рд╛рдХреНрдп рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓рдХреНрд╖рд┐рдд рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд╕ рдХреЗ рдХрд░реАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ [HyDE](https://huggingface.co/papers/2212.10496) рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдЬреЗрдВрдЯ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдкреБрдирдГ-рдкреНрд░рд╛рдкреНрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ [Self-Query](https://docs.llamaindex.ai/en/stable/examples/evaluation/RetryQuery/) рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪрд▓рд┐рдП рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВред ЁЯЫая╕П
рдЖрд╡рд╢реНрдпрдХ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреА рдЧрдИ рд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВред
```bash
!pip install smolagents pandas langchain langchain-community sentence-transformers rank_bm25 --upgrade -q
```
HF Inference API рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ `HF_TOKEN` рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реИрдз рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╣рдо рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП python-dotenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
```py
from dotenv import load_dotenv
load_dotenv()
```
рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдиреЙрд▓реЗрдЬ рдмреЗрд╕ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рд╣рдо RAG рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдпрд╣ рдбреЗрдЯрд╛ рд╕реЗрдЯ Hugging Face рдХреЗ рдХрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ Markdown рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ `transformers` рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд░рдЦреЗрдВрдЧреЗред
рдлрд┐рд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдХреЗ рдиреЙрд▓реЗрдЬ рдмреЗрд╕ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд░рд┐рдЯреНрд░реАрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдо [LangChain](https://python.langchain.com/docs/introduction/) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд╡реЗрдХреНрдЯрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдВ рд╣реИрдВред
```py
import datasets
from langchain.docstore.document import Document
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.retrievers import BM25Retriever
knowledge_base = datasets.load_dataset("m-ric/huggingface_doc", split="train")
knowledge_base = knowledge_base.filter(lambda row: row["source"].startswith("huggingface/transformers"))
source_docs = [
Document(page_content=doc["text"], metadata={"source": doc["source"].split("/")[1]})
for doc in knowledge_base
]
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
add_start_index=True,
strip_whitespace=True,
separators=["\n\n", "\n", ".", " ", ""],
)
docs_processed = text_splitter.split_documents(source_docs)
```
рдЕрдм рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд╕ рддреИрдпрд╛рд░ рд╣реИрдВред
рддреЛ рдЪрд▓рд┐рдП рдЕрдкрдирд╛ рдПрдЬреЗрдВрдЯрд┐рдХ RAG рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдПрдВ!
ЁЯСЙ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ RetrieverTool рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░рд╛ рдПрдЬреЗрдВрдЯ рдиреЙрд▓реЗрдЬ рдмреЗрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдЯреВрд▓ рдХреЗ рдПрдЯреНрд░реАрдмреНрдпреВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ vectordb рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рд╕рд░рд▓ рдЯреВрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ `@tool` рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ: рдЗрд╕рд▓рд┐рдП рд╣рдо [tools tutorial](../tutorials/tools) рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╕реЗрдЯрдЕрдк рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред
```py
from smolagents import Tool
class RetrieverTool(Tool):
name = "retriever"
description = "Uses semantic search to retrieve the parts of transformers documentation that could be most relevant to answer your query."
inputs = {
"query": {
"type": "string",
"description": "The query to perform. This should be semantically close to your target documents. Use the affirmative form rather than a question.",
}
}
output_type = "string"
def __init__(self, docs, **kwargs):
super().__init__(**kwargs)
self.retriever = BM25Retriever.from_documents(
docs, k=10
)
def forward(self, query: str) -> str:
assert isinstance(query, str), "Your search query must be a string"
docs = self.retriever.invoke(
query,
)
return "\nRetrieved documents:\n" + "".join(
[
f"\n\n===== Document {str(i)} =====\n" + doc.page_content
for i, doc in enumerate(docs)
]
)
retriever_tool = RetrieverTool(docs_processed)
```
рд╣рдордиреЗ BM25 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд░рд┐рдЯреНрд░реАрд╡рд▓ рд╡рд┐рдзрд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рд░рд┐рдЯреНрд░реАрд╡рд▓ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк BM25 рдХреЛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЦреЛрдЬ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдк рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдореЙрдбрд▓ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП [MTEB Leaderboard](https://huggingface.co/spaces/mteb/leaderboard) рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рдпрд╣ рд╕реАрдзрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрдЬреЗрдВрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ рдЗрд╕ `retriever_tool` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛!
рдПрдЬреЗрдВрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рдЗрди рдЖрд░реНрдЧреБрдореЗрдВрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- `tools`: рдЯреВрд▓реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рдиреНрд╣реЗрдВ рдПрдЬреЗрдВрдЯ рдХреЙрд▓ рдХрд░ рд╕рдХреЗрдЧрд╛ред
- `model`: LLM рдЬреЛ рдПрдЬреЗрдВрдЯ рдХреЛ рдкрд╛рд╡рд░ рджреЗрддрд╛ рд╣реИред
рд╣рдорд╛рд░рд╛ `model` рдПрдХ рдХреЙрд▓реЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХ stop_sequences рдЖрд░реНрдЧреБрдореЗрдВрдЯ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдирд░реЗрд╢рди рдХрдм рд░реЛрдХрдиреА рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реАрдзреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ HfEngine рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ LLM рдЗрдВрдЬрди рдорд┐рд▓ рд╕рдХреЗ рдЬреЛ Hugging Face рдХреЗ Inference API рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рд╣рдо [meta-llama/Llama-3.3-70B-Instruct](meta-llama/Llama-3.3-70B-Instruct) рдХрд╛ рдЙрдкрдпреЛрдЧ llm рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐:
- рдЗрд╕рдореЗрдВ рд▓рдВрдмрд╛ 128k рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╣реИ, рдЬреЛ рд▓рдВрдмреЗ рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реИ
- рдпрд╣ рд╣рд░ рд╕рдордп HF рдХреЗ Inference API рдкрд░ рдореБрдлреНрдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ!
_рдиреЛрдЯ:_ Inference API рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЙрдбрд▓ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдмрд┐рдирд╛ рдкреВрд░реНрд╡ рд╕реВрдЪрдирд╛ рдХреЗ рдЕрдкрдбреЗрдЯ рдпрд╛ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ [рдпрд╣рд╛рдВ](https://huggingface.co/docs/api-inference/supported-models) рдкрдврд╝реЗрдВред
```py
from smolagents import InferenceClientModel, CodeAgent
agent = CodeAgent(
tools=[retriever_tool], model=InferenceClientModel(model_id="meta-llama/Llama-3.3-70B-Instruct"), max_steps=4, verbosity_level=2
)
```
CodeAgent рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдиреЗ рдкрд░, рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ LLM рдЗрдВрдЬрди рдХреЛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреВрд▓ рдХреЙрд▓ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЗрд╕ рдкреНрд░реЙрдореНрдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдкрдиреЗ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм CodeAgent рдХрд╛ `.run()` рдореЗрдердб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдЬреЗрдВрдЯ LLM рдЗрдВрдЬрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯреВрд▓ рдХреЙрд▓реНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рдПрдХ рд▓реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рддрдм рддрдХ рдЪрд▓рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЯреВрд▓ final_answer рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ред
```py
agent_output = agent.run("For a transformers model training, which is slower, the forward or the backward pass?")
print("Final output:")
print(agent_output)
```