Mulai sekarangMulai gratis

Ambil Resource dan Prompt dari MCP

Server mata uang Anda menyediakan sebuah resource (file://currencies.txt) dan sebuah prompt (convert_currency_prompt) yang menggabungkan permintaan pengguna dengan konteks dan aturan khusus tugas. Untuk memberi masukan ke LLM, klien harus mengambil keduanya sekaligus. Implementasikan fungsi pembantu bernama get_context_from_mcp() yang mengembalikan teks resource dan teks prompt (dengan kueri pengguna sudah dimasukkan) sehingga pemanggil dapat membangun pesan.

Berkas currency_server.py tersedia dengan sebuah tool, resource, dan prompt. Gunakan sesi yang sama untuk membaca resource dan mendapatkan prompt dengan masukan pengguna.

Latihan ini merupakan bagian dari kursus

Pengantar Model Context Protocol (MCP)

Lihat Kursus

Instruksi latihan

  • Di dalam sesi, panggil metode untuk membaca resource pada "file://currencies.txt".
  • Panggil metode untuk mendapatkan prompt berdasarkan nama dengan masukan pengguna: gunakan nama prompt "convert_currency_prompt" dan dict arguments dengan kunci "currency_request" dan nilai user_query.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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?")))
Edit dan Jalankan Kode