Практычныя прытамкі: Навыкі навучэння з глыбокімі агентамі ў AI з агентамі
Практычныя прыказкі: Навучэнне навыкаў з агентамі глубокага розуму ў AI-системах з агентамі: контракты, перакананні та слоты для коду для команд, якія викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі «Навыкі навчання за дапамой глыбокіх агентаў у AI з агентнымі механізмамі» для працавальнікаў: чыстыя этапы, аранжаваныя блакіткі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы. Этап Аналізу работае найкраща, калі яго розглядаць як вимерную паверхню. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметку з вярненням да пачатковага стану прычаму расшырэння масштаба. Дакументавайце як успішны, так і няуспешны шляхы роботы. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не чымсь, што дадацца пазней.
Глыбокое расшырэнне навчання і адкрыцце навыкаў
Для ўраджання глыбокага навчэння з падкрэпленнем і адпрацоўкі паэтапна, перш чым зменяць код, неабходна визначыць даннэ, адпаведальную сторону за кожны крок і критэрыя завершэння. Аперацыямі трэба быць можлівасць пракрануць крок з вядомага пункта контролю без неабясненняя схованага стану. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы павінна вказываць на адзіну адпаведальную сторону, а не на заплутаны ланцужок задач. Неабходна людская апраўдка для тых крокав, якія выкорыстоўваюць грошы або зменяюць даннэ для працы. Працэс складання коду не є гарантіяй полнайасці бізнес-процэсаў.
Архітектура DeepAgents і алгорытмы навчэння
Для стадіі архітектуры DeepAgents і навчання неабяжна прадзефініраваць вхідныя даны, адпаведальнага за кожны крок і крэтырыя для завершэння пры зміне коду. Аперацыйныя системы павінны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Спрэчвайце гэтую стадію як кантракт межа вхіднымі данымі і падтверджанымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзефініравце крэтырыя успеху і адмовіцеся ад беззвучнага частковага завершэння. Заставіце людзкую апраўду для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны для працы. Кампайляванне коду не ўзроўнавалася з повным завершэнням бізнес-процэса.
План рэалізацыі з початку да канца
У стадії плану рэалізацыі «з канца ў канец» неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і вартасць токена або запыту разам з функцыйнальнымі рэзултатамі. Відразы вартасці з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спакульную. Заставіце людзкую апраўку для тых крокаў, якія витрачаюць грошы або зменяюць даны ў працэсе. Працэс кампілявання не є гарантыяй полнай адпаведнасці продукту бізнес-трэбованням. У стадії плану рэалізацыі «з канца ў канец» неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных запытаў є часткай продукту, а не чымсь, што будзе дадана пазней.
Палітурка.# Install deepagents and necessary tools
!pip install --upgrade deepagents langchain tavily-python
# Import libraries and set API keys (e.g., for LLM and search tool)
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass("OpenAI API Key: ")
os.environ["TAVILY_API_KEY"] = getpass("Tavily API Key: ")
from deepagents import create_deep_agent
from deepagents.backends import FilesystemBackend
from deepagents.middleware.filesystem import FileData
from langchain.chat_models import init_chat_model
from tavily import TavilyClient
Апраначыце агента і яго навыкі
Калі працуеце над этапам апраначыця агента, спачатку запісайце умовы кантракту: неабяжлівыя даны, сигнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцвачыць змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыполнення павінна вказываць на адзін конкрэтны аспект, а не на заплутаны ланцюг задач. Зробіце перапактаванне пасля дорогіх крокаў. Програма не павінна зноў выклікаць той самы LLM-званак, калі аператар пракушае ўжо выконаны вузел.
from deepagents import create_deep_agent
# Assume we have local skill directories under "./skills"
skill_dirs = ["./skills/pdf_processing", "./skills/data_analysis"]
agent = create_deep_agent(
model=model,
system_prompt="""
You are a highly capable AI assistant. Your objectives:
1. Break tasks into steps using write_todos().
2. Use internet_search and file tools to gather and store information.
3. When given a task, plan and execute it step-by-step, writing to files as needed.
4. Load skills from the filesystem to handle specialized tasks when relevant.
5. Summarize results and refine final output before returning.
""",
tools=[internet_search], # Web search tool
backend=FilesystemBackend(root_dir="./workspace"), # Persistent file storage
skills=skill_dirs, # Load skills from local directories
)
skills/
├── pdf_processing/
│ └── SKILL.md
└── data_analysis/
├── SKILL.md
└── analysis_script.py
---
name: pdf-processing
description: Skill to extract and analyze content from PDF documents.
---
# PDF Processing Skill
To use this skill, follow these steps:
1. Use `pdf-tools` to read PDF content.
2. Summarize key findings from the PDF text.
...
Прыклад взаімадзеяння
Калі працуеце над стадзіяй «Прыклад аб’яднання», спачатку запішыце кантракт: неабяжлівыя даннэ, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду чыстымі. Спрыймайце гэтую стадзію як кантракт межа даннэмі і перакананымі выходамі. Дайце назву артыфактам, задаць правілы пераканання успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зробіце перакананне пасля дорогіх крокаў. Програма не должна зноў выклікаць той самы калл LLM, калі аператар праканае пазнейшы вузел.
from langchain.schema import HumanMessage
query = "Organize the latest quarterly sales data and write a summary report."
response = agent.invoke({
"messages": [HumanMessage(content=query)]
})
print(response["messages"][-1]["content"])
Тэставанне і ацэнка
Калі працюеце над стадзіяй аптэставання і ацэнкі, спачатку запісайце умовы кантракту: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцьваты пазнейшыя змены коду.
Архітэктура системы і развяроцьба
Этап архітектуры системы і ўстановкі працюе найэфектывней, калі яго розглядаюць як параметр, які можна змерыць. Запісаўце адну ідеальную версію, адзін прыклад неудачы і прыметку па поверненню да попярэдня стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты роботы графа павінны быць простымі та з адазначаным типам. Вярнутыя структуры дакладнаўляюць, який вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
+------------------+ +--------------+
| Client/User | <--> | API Gateway | <---> [HTTP requests]
+------------------+ +------+-------+
|
v
+-------------+
| AgentCore | <-- AWS Bedrock AgentCore (managed runtime)
+-------------+
|
+-------------+-------------+
| |
+-------------------+ +-------------------+
| Deep Agent Service | | Storage (S3/DB) | <-- File/memory backend, logs
+-------------------+ +-------------------+
| |
+-------------+-------------+
|
+---------------+
| LLM Models | <-- e.g., OpenAI, Anthropic, local LLMs
+---------------+
Прыклад коду: стварэнне та запуск глыбокага агента
Прыклад коду, які стварае і тэстуе, працюе найкраща, калі яго розглядаць як мерыемую структуру. Запісаўце адна ідеальная версія, адзін прыклад неудачы і прыметкі па поверненню да пярвоначальнага стану пры расшырэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Храніце стан графа ў простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакойваюць працэс пасля перарываў.
from deepagents import create_deep_agent
from deepagents.backends import FilesystemBackend
from deepagents.middleware.filesystem import FileData
from langchain.chat_models import init_chat_model
from tavily import TavilyClient
import os
def setup_agent():
"""Initialize the Deep Agent with tools, skills, and system prompt."""
# Model and tools initialization
model = init_chat_model(model="openai:gpt-4o")
tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
def web_search(query: str, max_results: int = 3) -> str:
results = tavily_client.search(query, max_results=max_results)
return "\n".join(f"{r.title}: {r.summary}" for r in results)
# Create the deep agent with planning, files, and skills
try:
agent = create_deep_agent(
model=model,
tools=[web_search],
system_prompt="""You are an expert agent. Your workflow:
1. Create a plan with write_todos().
2. Use tools (e.g. web_search) and file system to research and work.
3. If specialized tasks arise, load relevant skills from the 'skills' directory.
4. Save results and refine the output at each step.
""",
backend=FilesystemBackend(root_dir="./workspace"),
skills=["./skills/pdf_processing", "./skills/data_analysis"]
)
return agent
except Exception as e:
print(f"Error initializing agent: {e}")
raise
def invoke_agent(agent, user_query):
"""Invoke the agent on a user query and return the final answer."""
try:
messages = [{"role": "user", "content": user_query}]
result = agent.invoke({"messages": messages})
return result["messages"][-1]["content"]
except Exception as e:
print(f"Agent invocation failed: {e}")
return None
# Example usage
if __name__ == "__main__":
agent = setup_agent()
task = "Analyze the recent research on climate change and summarize key findings."
answer = invoke_agent(agent, task)
print("Agent response:", answer)
Пашанованне ад нашага заснавальніка
Паведамленне The A з нашай стадыі працуе найкраща, калі яго спрыяваць як меркаваную паверхню. Зберажыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выконання і вартасць токеноў або запытак праза функцыйнае рэзультат. Відкрытая візуалізацыя вартасцей запобегае неспакою з боку расчыткаў, калі процес пераходзіць з дэмовай среды ў спяльныя сераўеры. Рэзультаты графах трэба падтрымваць у простам і типаваным формате. Вярнутыя структуры данных маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакшуюць продовжэнне роботы пасля перерываў. Паведамленне The A з нашай стадыі працуе найкраща, калі яго спрыяваць як меркаваную паверхню. Зберажыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Чэк-ліст для эксплуатацыі
Калі працюеце над этапам разработкі оператыўнага чэк-лісту, спачатку запісайце умовы контракту: неабходныя даны, сігнал успеху і тое, што выканаецца у разы ўзельнага неудачы. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць праўдзівымі.
Зберагайце настройкі парадульна ад коду прыемліка. Файлы сераўнавання, храненні секрэтных дадзенаў і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабходнасці чытання всей структуры.
Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення праблемы не должна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыяўляе роботу да пазнейшага узела.
Фіксуйце версіі залежнасцяў і запісвайце хэш адобраза, які выканаў дэманстрацыю. Возможнасць павторнага стварэння ситуацыі важлівей, чым традыцыйныя знання.
Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыяўленні, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Пауза пасля дорогіх крокаў. Система абработкі заявок не должна знову браць плата за той самы вызов LLM, калі аператар прабуе зноў выконаць пазнейшы крок.
Перад апранаваньем стака неабходна заморазіць версіі, зафіксаваць «золаты» транскрыпты для критичнага шляху і паверыцца ў крокі вярнення да пачатковага стану. У спакаваных средах трэба встановіць ліміты швайнаў, пераканацца ў належнасці ресурсаў і вызначыць чысткага адпаведальнага за зміны секрэтных даных. Краща простая надзеянасць на стабільнасць, чым хітрыя експерыменты, якія выкалічваюцца разова.
Прымечанне для пакету 716df844b0ca: не трэба клаці ключы прадастальцаў у репазітары, встановіць ліміт токена на кожную сесію і зберагчыць транскрыпты разам з фіксатрамі для ацэнкі, ўпрымку празьмены моделей заставалі пораўнанневымі.
Калі працуеце над першым этапам зміцнення, спачатку запісайте умовы: неабяцковыя даны, сигнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список дапамагае залишацца чыстым пад будучыя зміны коду. Запісвайце час выканання і вартась токенаў або запытак пад функцыйнальнымі рэзултатамі. Відразы вартасей з самага пачатку запобегае неспакою, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне зміцнення 0/862: вымерыце час выканання, класію памылак і вартась токенаў для гэтага пункту, а потым выявіце, чы хочаце застаўіць змяну на адной фіксаванай сэтцы пытанняў, а не на адной лічбе.
Першы этап зміцнення працюе лепей, калі яго спрыяглядаць як мерымабельную паверхню. Запісайце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваце сферу дзейнасці. Дакументавайце як успешны, так і вярнэнчы паты. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 1/862: звярніце увагу на час выканання, клас памылак і колькасць викорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хацяце застаўіць змены.
Для 2-й стадзіі паўжасткі неабходна перад змянай коду чытко апісаць вхідныя даны, адпаведальнага за выкананне крока і критэрыяы завершэння. Аперацыйныя працавнікі должны магчыма было перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Штую стадзію трэба спрыятаць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце всі неабходныя элементы, апісаце критэрыяы успеху і не прабывайце прыймаць часткова завершаныя рэзультаты без падтверджэння.
Дзеянне паўжасткі 2/862: звярніце увагу на час выканання, клас памылак і колькасць викорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хацяце застаўіць змены.
Калі працуеце над 3-й стадзіяю прыемкі з паўнейшага захавання, спачатку запісайце умовы кантракту: неабходныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі список контроля дапамагае залишыць пазнейшыя змены коду чыстымі. Зберагайце настройкі параду ўнутры коду прыемкі. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжнага чытання всіх элементаў.
Дзялей 3/862 прыемкі з паўнейшага захавання: вы мерыце час выконання, класію каштоўкаў і выкарыстоўванне токенав для гэтай прыемкі, а пасля выявляеце, чы хацяце застаўіць змену на адной фіксаванай сэтке пытанняў, а не на адзінственных прыкладах.
3-я стадзія прыемкі з паўнейшага захавання работае лепей, калі яе спрыямаць як мерыемую паверхню. Запісайце адны ідеальны прыклад работы, адзін кейс неудачы і прыемку для вярнення да пачатковага стану, прычаму расширяючы сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптав. Калі якісь крок не выйшае, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг дзеяння.
Дзеянне паўжчання 4/862: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набора пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацца застаўляць змяну.
Для 5-го этапа паўжчання неабходна перад змянай коду чытко визначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння. Аперацыяныя працавнікі должны магчымае перадзваначыць гэты этап з вядомага пункта контролю, не прыпускаючы стану, які застаўся нез’явным. Запісывайце час выканання і колькасць токенаў або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра витраты запобегае неспакойным рашчыткам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне паўжчання 5/862: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набора пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацца застаўляць змяну.
Калі працуеце над 6-й стадзіяю прыемкі з павышэння безпекі, спачатку запісайце угоду: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковы нявыплэн. Такі список контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі.
Документавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць частью продукту, а не пазнейшым дапрацоўкам.
Дзялей 6/862 прыемкі з павышэння безпекі: вымерайце час выканання, класыя ошибкі і витрату токенав для гэтай прыемкі, а пасля выберайце, чы робіць змены на адной пазначанай сэткі пытанняў, а не на адной толькі прымітцы.
7-я стадзія прыемкі з павышэння безпекі работае лепей, калі яе спрыяглядаць як меравальную плошчу. Запісайце адну «золатую» транскрыпцыю, адны прыклад нявыплэну і прымітку па абратанню роботы, перш чым расширваць масштаб.
Спрыяглядайце гэтую стадзію як угоду межа даннімі і перакананымі выходамі. Дайце назвы артыфактам, задаце перакананні успеху і адмовіцеся ад тыхоўскага частковага завершэння.
Дзеянне паўжырання 7/862: звярніце увагу на час выканання, класыя ошибак і витраты токенаў для гэтага запісу, а пасля, на аднойчынай базе паказаных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.
Для 8-го этапа паўжырання неабходна перад змянай коду чытальна апісаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыяныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Канфігурацыю трэба зберагчы за межамі коду прыемленае. Файлы сяродавішча, хранільнікі секрэтных дадзенняў і флагі функций павінны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь код.
Дзеянне паўжырання 8/862: звярніце увагу на час выканання, класыя ошибак і витраты токенаў для гэтага запісу, а пасля, на аднойчынай базе паказаных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.