McpToolRegistrationService คลาส
บริการสําหรับการจัดการเครื่องมือ MCP และเซิร์ฟเวอร์สําหรับตัวแทน
คอนสตรักเตอร์
McpToolRegistrationService()
พารามิเตอร์
| ชื่อ | คำอธิบาย |
|---|---|
|
logger
|
Default value: None
|
วิธีการ
| __init__ |
เริ่มต้นบริการลงทะเบียนเครื่องมือ MCP สําหรับ OpenAI |
| __new__ | |
| add_tool_servers_to_agent |
เพิ่มเซิร์ฟเวอร์ MCP ใหม่ลงในตัวแทนโดยการสร้างอินสแตนซ์ Agent ใหม่ หมายเหตุ: เนื่องจากข้อจํากัด SDK ของตัวแทน OpenAI ต้องตั้งค่าเซิร์ฟเวอร์ MCP ในระหว่างการสร้างตัวแทน หากพบเซิร์ฟเวอร์ใหม่ วิธีนี้จะสร้างอินสแตนซ์ Agent ใหม่โดยมีการเตรียมใช้งานเซิร์ฟเวอร์ MCP ทั้งหมด (ที่มีอยู่ + ใหม่) อย่างถูกต้อง |
| cleanup_all_servers |
ล้างเซิร์ฟเวอร์ MCP ที่เชื่อมต่อทั้งหมด |
| send_chat_history |
แยกประวัติการแชทจากเซสชัน OpenAI และส่งไปยังแพลตฟอร์ม MCP วิธีนี้จะแยกข้อความจากวัตถุเซสชัน OpenAI โดยใช้ get_items() และส่งไปยังแพลตฟอร์ม MCP สําหรับการป้องกันภัยคุกคามแบบเรียลไทม์ |
| send_chat_history_messages |
ส่งข้อความประวัติการแชท OpenAI ไปยังแพลตฟอร์ม MCP สําหรับการป้องกันภัยคุกคาม วิธีนี้ยอมรับรายการของข้อความ OpenAI TResponseInputItem แปลงเป็นรูปแบบ ChatHistoryMessage และส่งไปยังแพลตฟอร์ม MCP Note แม้ว่าข้อความจะว่างเปล่า หรือมีการกรองข้อความทั้งหมดระหว่างการแปลง คําขอจะยังคงถูกส่งไปยังแพลตฟอร์ม MCP ซึ่งทําให้แน่ใจว่าผู้ใช้ ข้อความจาก turn_context.activity.text ได้รับการลงทะเบียนอย่างถูกต้องสําหรับ การป้องกันภัยคุกคามแบบเรียลไทม์ |
__init__
__new__
__new__(**kwargs)
add_tool_servers_to_agent
เพิ่มเซิร์ฟเวอร์ MCP ใหม่ลงในตัวแทนโดยการสร้างอินสแตนซ์ Agent ใหม่
หมายเหตุ: เนื่องจากข้อจํากัด SDK ของตัวแทน OpenAI ต้องตั้งค่าเซิร์ฟเวอร์ MCP ในระหว่างการสร้างตัวแทน หากพบเซิร์ฟเวอร์ใหม่ วิธีนี้จะสร้างอินสแตนซ์ Agent ใหม่โดยมีการเตรียมใช้งานเซิร์ฟเวอร์ MCP ทั้งหมด (ที่มีอยู่ + ใหม่) อย่างถูกต้อง
async add_tool_servers_to_agent(agent: Agent, auth: Authorization, auth_handler_name: str, context: TurnContext, auth_token: str | None = None) -> Agent
พารามิเตอร์
| ชื่อ | คำอธิบาย |
|---|---|
|
agent
จำเป็น
|
<xref:agents.agent.Agent>
ตัวแทนที่มีอยู่เพื่อเพิ่มเซิร์ฟเวอร์ |
|
auth
จำเป็น
|
ตัวจัดการการรับรองความถูกต้องสําหรับการแลกเปลี่ยนโทเค็น |
|
auth_handler_name
จำเป็น
|
ชื่อของตัวจัดการการรับรองความถูกต้อง |
|
context
จำเป็น
|
เปลี่ยนบริบทสําหรับการดําเนินการปัจจุบัน |
|
auth_token
|
โทเค็นการรับรองความถูกต้องเพื่อเข้าถึงเซิร์ฟเวอร์ MCP Default value: None
|
การส่งคืน
| พิมพ์ | คำอธิบาย |
|---|---|
|
<xref:agents.agent.Agent>
|
อินสแตนซ์ใหม่ของ Agent ที่มีเซิร์ฟเวอร์ MCP ทั้งหมดหรือตัวแทนดั้งเดิมหากไม่มีเซิร์ฟเวอร์ใหม่ |
cleanup_all_servers
ล้างเซิร์ฟเวอร์ MCP ที่เชื่อมต่อทั้งหมด
async cleanup_all_servers() -> None
การส่งคืน
| พิมพ์ | คำอธิบาย |
|---|---|
send_chat_history
แยกประวัติการแชทจากเซสชัน OpenAI และส่งไปยังแพลตฟอร์ม MCP
วิธีนี้จะแยกข้อความจากวัตถุเซสชัน OpenAI โดยใช้ get_items() และส่งไปยังแพลตฟอร์ม MCP สําหรับการป้องกันภัยคุกคามแบบเรียลไทม์
async send_chat_history(turn_context: TurnContext, session: Session, limit: int | None = None, options: ToolOptions | None = None) -> OperationResult
พารามิเตอร์
| ชื่อ | คำอธิบาย |
|---|---|
|
turn_context
จำเป็น
|
TurnContext จาก SDK ตัวแทนที่ประกอบด้วยข้อมูลการสนทนา ต้องมีกิจกรรมที่ถูกต้องพร้อมด้วย conversation.id activity.id และ activity.text |
|
session
จำเป็น
|
<xref:agents.memory.session.Session>
อินสแตนซ์เซสชัน OpenAI ที่จะแยกข้อความออกมา ต้องสนับสนุนเมธอด get_items() ที่ส่งกลับรายการของ TResponseInputItem |
|
limit
|
จํานวนสูงสุดที่เป็นตัวเลือกของรายการที่จะดึงข้อมูลจากเซสชัน ถ้าไม่มี จะดึงข้อมูลทั้งหมด Default value: None
|
|
options
|
ตัวเลือกเครื่องมือที่เลือกได้สําหรับการกําหนดเอง ถ้าไม่มี ให้ใช้ตัวเลือกเริ่มต้นกับ orchestrator_name="OpenAI" Default value: None
|
การส่งคืน
| พิมพ์ | คำอธิบาย |
|---|---|
|
OperationResult ที่ระบุความสําเร็จหรือความล้มเหลว เมื่อประสบความสําเร็จ ส่งกลับ OperationResult.success() เมื่อล้มเหลว ส่งกลับ OperationResult.failed() ที่มีรายละเอียดข้อผิดพลาด |
ข้อยกเว้น
| พิมพ์ | คำอธิบาย |
|---|---|
|
ถ้า turn_context เป็น ไม่มี หรือ เซสชัน คือ ไม่มี |
ตัวอย่าง
>>> from agents import Agent, Runner
>>> from microsoft_agents_a365.tooling.extensions.openai import (
... McpToolRegistrationService
... )
>>>
>>> service = McpToolRegistrationService()
>>> agent = Agent(name="my-agent", model="gpt-4")
>>>
>>> # In your agent handler:
>>> async with Runner.run(agent, messages) as result:
... session = result.session
... op_result = await service.send_chat_history(
... turn_context, session
... )
... if op_result.succeeded:
... print("Chat history sent successfully")
send_chat_history_messages
ส่งข้อความประวัติการแชท OpenAI ไปยังแพลตฟอร์ม MCP สําหรับการป้องกันภัยคุกคาม
วิธีนี้ยอมรับรายการของข้อความ OpenAI TResponseInputItem แปลงเป็นรูปแบบ ChatHistoryMessage และส่งไปยังแพลตฟอร์ม MCP
Note
แม้ว่าข้อความจะว่างเปล่า หรือมีการกรองข้อความทั้งหมดระหว่างการแปลง
คําขอจะยังคงถูกส่งไปยังแพลตฟอร์ม MCP ซึ่งทําให้แน่ใจว่าผู้ใช้
ข้อความจาก turn_context.activity.text ได้รับการลงทะเบียนอย่างถูกต้องสําหรับ
การป้องกันภัยคุกคามแบบเรียลไทม์
async send_chat_history_messages(turn_context: TurnContext, messages: List[EasyInputMessageParam | Message | ResponseOutputMessageParam | ResponseFileSearchToolCallParam | ResponseComputerToolCallParam | ComputerCallOutput | ResponseFunctionWebSearchParam | ResponseFunctionToolCallParam | FunctionCallOutput | ToolSearchCall | ResponseToolSearchOutputItemParamParam | ResponseReasoningItemParam | ResponseCompactionItemParamParam | ImageGenerationCall | ResponseCodeInterpreterToolCallParam | LocalShellCall | LocalShellCallOutput | ShellCall | ShellCallOutput | ApplyPatchCall | ApplyPatchCallOutput | McpListTools | McpApprovalRequest | McpApprovalResponse | McpCall | ResponseCustomToolCallOutputParam | ResponseCustomToolCallParam | ItemReference], options: ToolOptions | None = None) -> OperationResult
พารามิเตอร์
| ชื่อ | คำอธิบาย |
|---|---|
|
turn_context
จำเป็น
|
TurnContext จาก SDK ตัวแทนที่ประกอบด้วยข้อมูลการสนทนา ต้องมีกิจกรรมที่ถูกต้องพร้อมด้วย conversation.id activity.id และ activity.text |
|
messages
จำเป็น
|
List[<xref:openai.types.responses.easy_input_message_param.EasyInputMessageParam> | <xref:openai.types.responses.response_input_item_param.Message> | <xref:openai.types.responses.response_output_message_param.ResponseOutputMessageParam> | <xref:openai.types.responses.response_file_search_tool_call_param.ResponseFileSearchToolCallParam> | <xref:openai.types.responses.response_computer_tool_call_param.ResponseComputerToolCallParam> | <xref:openai.types.responses.response_input_item_param.ComputerCallOutput> | <xref:openai.types.responses.response_function_web_search_param.ResponseFunctionWebSearchParam> | <xref:openai.types.responses.response_function_tool_call_param.ResponseFunctionToolCallParam> | <xref:openai.types.responses.response_input_item_param.FunctionCallOutput> | <xref:openai.types.responses.response_input_item_param.ToolSearchCall> | <xref:openai.types.responses.response_tool_search_output_item_param_param.ResponseToolSearchOutputItemParamParam> | <xref:openai.types.responses.response_reasoning_item_param.ResponseReasoningItemParam> | <xref:openai.types.responses.response_compaction_item_param_param.ResponseCompactionItemParamParam> | <xref:openai.types.responses.response_input_item_param.ImageGenerationCall> | <xref:openai.types.responses.response_code_interpreter_tool_call_param.ResponseCodeInterpreterToolCallParam> | <xref:openai.types.responses.response_input_item_param.LocalShellCall> | <xref:openai.types.responses.response_input_item_param.LocalShellCallOutput> | <xref:openai.types.responses.response_input_item_param.ShellCall> | <xref:openai.types.responses.response_input_item_param.ShellCallOutput> | <xref:openai.types.responses.response_input_item_param.ApplyPatchCall> | <xref:openai.types.responses.response_input_item_param.ApplyPatchCallOutput> | <xref:openai.types.responses.response_input_item_param.McpListTools> | <xref:openai.types.responses.response_input_item_param.McpApprovalRequest> | <xref:openai.types.responses.response_input_item_param.McpApprovalResponse> | <xref:openai.types.responses.response_input_item_param.McpCall> | <xref:openai.types.responses.response_custom_tool_call_output_param.ResponseCustomToolCallOutputParam> | <xref:openai.types.responses.response_custom_tool_call_param.ResponseCustomToolCallParam> | <xref:openai.types.responses.response_input_item_param.ItemReference>]
รายการของข้อความ OpenAI TResponseInputItem ที่จะส่ง รองรับ UserMessage, AssistantMessage, SystemMessage และชนิดข้อความ OpenAI อื่น ๆ สามารถว่างเปล่า - คําขอจะยังคงถูกส่งไปยังการลงทะเบียนข้อความของผู้ใช้จาก turn_context.activity.text |
|
options
|
ตัวเลือกเครื่องมือที่เลือกได้สําหรับการกําหนดเอง ถ้าไม่มี ให้ใช้ตัวเลือกเริ่มต้นกับ orchestrator_name="OpenAI" Default value: None
|
การส่งคืน
| พิมพ์ | คำอธิบาย |
|---|---|
|
OperationResult ที่ระบุความสําเร็จหรือความล้มเหลว เมื่อประสบความสําเร็จ ส่งกลับ OperationResult.success() เมื่อล้มเหลว ส่งกลับ OperationResult.failed() ที่มีรายละเอียดข้อผิดพลาด |
ข้อยกเว้น
| พิมพ์ | คำอธิบาย |
|---|---|
|
ถ้า turn_context เป็น ไม่มี หรือ ข้อความ เป็น ไม่มี |
ตัวอย่าง
>>> from microsoft_agents_a365.tooling.extensions.openai import (
... McpToolRegistrationService
... )
>>>
>>> service = McpToolRegistrationService()
>>> messages = [
... {"role": "user", "content": "Hello"},
... {"role": "assistant", "content": "Hi there!"},
... ]
>>>
>>> result = await service.send_chat_history_messages(
... turn_context, messages
... )
>>> if result.succeeded:
... print("Chat history sent successfully")