Галоўная / Артыкулы

Семантычны пошук па MCP-інструментах з Amazon Bedrock AgentCore

Семантычны пошук па MCP-інструментах праз Amazon Bedrock AgentCore Gateway: навошта ён агентам, калі спіс інструментаў расце, і як яго наладзіць.

Выдавец: REACTAPP.TOP4 хв чытання903 слоў

Крыніцы: 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)

Налаштаванне пошуку

Справака

Што далей

Чэртак аператыўных крокаў