Začněte nyníZačněte zdarma

Načtení resource a promptu z MCP

Tvůj currency server zpřístupňuje resource (file://currencies.txt) a prompt (convert_currency_prompt), který kombinuje uživatelův požadavek s kontextem a pravidly specifickými pro daný úkol. Aby bylo možné tyto informace předat LLM, musí klient načíst obojí najednou. Implementuj pomocnou funkci get_context_from_mcp(), která vrátí text resource a text promptu (s dotazem uživatele již zahrnutým), aby volající mohl sestavit zprávu.

Soubor currency_server.py je k dispozici s nástrojem, resource a promptem. Použij stejnou session pro načtení resource i získání promptu se vstupem uživatele.

Toto cvičení je součástí kurzu

Introduction to Model Context Protocol (MCP)

Zobrazit kurz

Pokyny k cvičení

  • Uvnitř session zavolej metodu pro načtení resource na adrese "file://currencies.txt".
  • Zavolej metodu pro získání promptu podle názvu se vstupem uživatele: použij název promptu "convert_currency_prompt" a slovník arguments s klíčem "currency_request" a hodnotou user_query.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def get_context_from_mcp(user_query: str) -> tuple[str, str]:
    """Fetch resource content and prompt text from the MCP server."""
    params = StdioServerParameters(command=sys.executable, args=["currency_server.py"])

    async with stdio_client(params) as (reader, writer):
        async with ClientSession(reader, writer) as session:
            await session.initialize()

            # Read the resource (supported currencies)
            resource_result = await session.____("file://currencies.txt")
            resource_text = resource_result.contents[0].text

            # Get the prompt with the user's query
            prompt_result = await session.____("convert_currency_prompt",
                arguments={"currency_request": user_query})
            prompt_text = prompt_result.messages[0].content.text

            return resource_text, prompt_text

print(asyncio.run(get_context_from_mcp("How much is 50 GBP in euros?")))
Upravit a spustit kód