Skip to main content

采样演练

交互式练习:对照下面这个示例项目,逐步查看 sampling 在服务器端和客户端各自是如何实现的。点击"下一步"会自动打开对应文件并高亮相关代码;文件树里的任何文件都可以随时点开查看。

教程步骤

让我们通过一个示例项目来更好地了解如何实现此功能。

在服务器端,在工具调用期间,运行 create_message() 方法,传入一些您希望发送给语言模型的消息。

from mcp.server.fastmcp import FastMCP, Context
from mcp.types import SamplingMessage, TextContent
mcp = FastMCP(name="Demo Server")
@mcp.tool()
async def summarize(text_to_summarize: str, ctx: Context):
prompt = f"""
Please summarize the following text:
{text_to_summarize}
"""
result = await ctx.session.create_message(
messages=[
SamplingMessage(
role="user", content=TextContent(type="text", text=prompt)
)
],
max_tokens=4000,
system_prompt="You are a helpful research assistant.",
)
if result.content.type == "text":
return result.content.text
else:
raise ValueError("Sampling failed")
if __name__ == "__main__":
mcp.run(transport="stdio")