Галоўная / Артыкулы / Практычныя прытамулі: сэмантычны пошук у інструментах MCP з Amazon Bedrock AgentCore

Практычныя прытамулі: сэмантычны пошук у інструментах MCP з Amazon Bedrock AgentCore

Практычныя прыказкі: семантны пошук у інструментах MCP з Amazon Bedrock AgentCore; контракты, перакрыццяі та слоты для коду для команд, якіе викорыстоўваюць гэты патэрн.

903 слоў

У гэтым карыце практычным напамінанні перакладзенаецца шлях ад сыр'ёў да рабочай системы для: семантычнага пошуку ў інструментах 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)

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

Справака

Што далей

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