Семантычны пошук па MCP-інструментах з Amazon Bedrock AgentCore
Семантычны пошук па MCP-інструментах праз Amazon Bedrock AgentCore Gateway: навошта ён агентам, калі спіс інструментаў расце, і як яго наладзіць.
Крыніцы: Semantic search across MCP tools with Amazon Bedrock AgentCore Gateway
У гэтым карыце практычным напамінанні перакладзенаецца шлях ад сыр'ёў да рабочай сістэмы для: семантычнага пошуку ў інструментах MCP за дапамогою Amazon Bedrock AgentCore Gateway. Акцэнт ставіцца на крокі, якія можна выконваць, чыстае перакананне ў правільнасці дзействаў, а таксама на код, які можна проста дадаць у рэпазітарый без неабязковасці з'ясоўвання намеру. Для загальнага агледка, перш чым зменяць код, неабходна візначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю, не прабуючы здогадвацца пра схованы стан. Спрыяйце цім этапам як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, візначыце крытэрыя успеху і не падтрымайце беззвучнае частковае завершэння.
Што вы ствараеце
Калі працуеце над праектам «What you build», спачатку запісайце умовы працы: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі спіс контролю дапамагае залішацца чыстым пад будучыязмененняя коду. Запісвайце час выканання і вартась токенаў або запытаў праза функцыйнае рэзультат. Відразлівае паказанне вартасей запобегае неспадзяваным рахункам, калі працэўнае сераўеры зменяюцца з дамовай версіі на спакульнаныя. Запішвайце назву інструмента, хэш параметраў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.
Чаму семантычны пошук на боку Gateway
Калі працуеце над тэмай «Чаму семантны пошук на бакэндзе», спачатку запісайце шаблон: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьварыць пазнейшыя змены ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адрабоўваць аўдыт без неабяжлівага чытання всей структуры. Запісвайце назву інструмента, хэш аргументаў, час адпаведзі і рынак кожнага вызову. Без такога лёгкага следу час на дэбагаванне агента, які застраў у цыкле, губіцца на гадзіны.
Прыямыя прычынкі
Калі працюеце над прабэральнымі умовамі, спачатку запісайце «контракт»: неабяжлівыя даныя, сігнал працэздольнасці і тое, што выходзіць у разе частковай нявыполненасці. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Документавайце як шлях успеху, так і шлях вярнення да нормальнасці. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсцю часткай продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з назвай інструмента, хэшам параметраў, часам адклікання і рэзультатам кожнага вызову. Без такога следу дэбаггінгавы агент губіць гадзіны на безрэзультатныя цыклы. Калі працюеце над прабэральнымі умовамі, спачатку запісайце «контракт»: неабяжлівыя даныя, сігнал працэздольнасці і тое, што выходзіць у разе частковай нявыполненасці. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівае ставленне да гэтага этапу як да «контракта» межа данымі і перакананымі рэзультатамі. Дайце назвы элементам, задаце крытэрыя успеху і не падтрымайце тыхню частковую завершэннасць.
Адрыхтуйце семантычны пошук
Семантычныя пошукі працуюць наўсёх лепшая, калі іх розглядаць як мерыемую структуру. Зафіксавайце адны ідэальны прыклад рэзультата, адну сітуацыю неудачы і прыметкі па поверненню да пярвоначальнага стану пры расшырэнні масштаба. Запісвайце часы выканання і косты токенав або запіта праза функцыональныя рэзультаты. Відразлівае паказанне костаў з самага пачатку запобегае неспакою з боку расчыткаў, калі працэс пераходзіць з дамовай асяроддзя ў спяльнаваныя сераўры. Актуалізуйце інструменты з вузкімі схемамі і чыткімі пазначкамі пра побачныя эфекты. Адпаведальным адправільцам неабходна знаты, якія запывы мутуюць стан сістэмы, перш чым яны автаматычна схваляюць іх.
Шаг 1: Запыт у інструменце пошуку
Шаг 1: Запіты до інструменту пошуку даюць найлепшыя рэзультаты, калі ўваходзяць у фармат вімернай плошчы. Зафіксавце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра відкат перш чым расшырваць дыячную сферу. Зберагаюце настройкі пазыроўна ад коду прыемлівача. Файлы сераўнавання, хранільнікі секрэтных даных і пазначкі функцый крануцца ў аднам месцы, дзе аператары можаць аўдытаваць іх без неабяжнага чытання всіх дадзеных. Актуалізавайце інструменты з вузкімі схемамі і чытальнымі пазначкамі побачных эфектаў. Хостам неабходна знаты, якія запыты мутуюць стан, перш чым яны автаматычна схваляюцься.
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
async with streamablehttp_client(gateway_url) as (r, w, _):
async with ClientSession(r, w) as session:
await session.initialize() result = await session.call_tool(
"x_amz_bedrock_agentcore_search",
{"query": "find a customer by phone number"},
) for match in result.content:
print(match.text)
Шаг 2: Іспользуйце рэзультаты для фільтрацыі спіса інструментаў
Шаг 2: Ўзайце рэзультаты для фільтрацыі спіса інструментоў — гэта работае лепш, калі яго спрыяваць як вімерную паверхню. Запісайце адны ідэальны прыклад работы, адну справу з бягункам і прыметку па адварцыі раней, чым расшырваце сферу дзеяння. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Адкрыйце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.
async def smart_tool_selection(session, user_request: str, top_k: int = 5):
search = await session.call_tool(
"x_amz_bedrock_agentcore_search",
{"query": user_request},
)
relevant_tool_names = [match.text for match in search.content[:top_k]] all_tools = await session.list_tools()
return [t for t in all_tools.tools if t.name in relevant_tool_names]
Шаг 3: Праўяце яго да агента Strands
Шаг 3: Праўяце яго да агента Strands — гэта работае лепш, калі яго спрыяваць як вімерную паверхню. Запісайце адны ідэальны прыклад работы, адну справу з бягункам і прыметку па адварцыі раней, чым расшырваце сферу дзеяння. Валічыце маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выйшоў, прычына бягунку должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі дзеяння.
from strands import Agent
from strands.tools.mcp import MCPClient
async def run(user_message: str):
async with MCPClient(gateway_url) as mcp:
relevant_tools = await smart_tool_selection(mcp.session, user_message) agent = Agent(
model="anthropic.claude-opus-4-7-v1:0",
tools=relevant_tools,
system_prompt="Use only the provided tools to answer.",
)
return await agent.run_async(user_message)