McpToolRegistrationService Classe
Service de gestion des outils et des serveurs MCP pour un agent
Constructeur
McpToolRegistrationService()
Paramètres
| Nom | Description |
|---|---|
|
logger
|
Valeur par défaut: None
|
Méthodes
| __init__ |
Initialisez le service d’inscription de l’outil MCP pour OpenAI. |
| __new__ | |
| add_tool_servers_to_agent |
Ajoutez de nouveaux serveurs MCP à l’agent en créant une instance d’agent. Remarque : En raison des limitations du Kit de développement logiciel (SDK) Des agents OpenAI, les serveurs MCP doivent être définis lors de la création de l’agent. Si de nouveaux serveurs sont trouvés, cette méthode crée une instance agent avec tous les serveurs MCP (existants + nouveau) correctement initialisés. |
| cleanup_all_servers |
Nettoyer tous les serveurs MCP connectés |
| send_chat_history |
Extrayez l’historique des conversations d’une session OpenAI et envoyez-le à la plateforme MCP. Cette méthode extrait les messages d’un objet session OpenAI à l’aide de get_items() et les envoie à la plateforme MCP pour la protection contre les menaces en temps réel. |
| send_chat_history_messages |
Envoyez des messages d’historique des conversations OpenAI à la plateforme MCP pour la protection contre les menaces. Cette méthode accepte une liste de messages OpenAI TResponseInputItem, les convertit au format ChatHistoryMessage et les envoie à la plateforme MCP. Note Même si les messages sont vides ou que tous les messages sont filtrés pendant la conversion, la demande sera toujours envoyée à la plateforme MCP. Cela garantit à l’utilisateur le message de turn_context.activity.text est enregistré correctement pour protection contre les menaces en temps réel. |
__init__
__new__
__new__(**kwargs)
add_tool_servers_to_agent
Ajoutez de nouveaux serveurs MCP à l’agent en créant une instance d’agent.
Remarque : En raison des limitations du Kit de développement logiciel (SDK) Des agents OpenAI, les serveurs MCP doivent être définis lors de la création de l’agent. Si de nouveaux serveurs sont trouvés, cette méthode crée une instance agent avec tous les serveurs MCP (existants + nouveau) correctement initialisés.
async add_tool_servers_to_agent(agent: Agent, auth: Authorization, auth_handler_name: str, context: TurnContext, auth_token: str | None = None) -> Agent
Paramètres
| Nom | Description |
|---|---|
|
agent
Obligatoire
|
<xref:agents.agent.Agent>
Agent existant pour ajouter des serveurs à |
|
auth
Obligatoire
|
Gestionnaire d’autorisation pour l’échange de jetons. |
|
auth_handler_name
Obligatoire
|
Nom du gestionnaire d’autorisation. |
|
context
Obligatoire
|
Activer le contexte de l’opération actuelle. |
|
auth_token
|
Jeton d’authentification pour accéder aux serveurs MCP. Valeur par défaut: None
|
Retours
| Type | Description |
|---|---|
|
<xref:agents.agent.Agent>
|
Nouvelle instance de l’agent avec tous les serveurs MCP ou agent d’origine si aucun nouveau serveur |
cleanup_all_servers
Nettoyer tous les serveurs MCP connectés
async cleanup_all_servers() -> None
Retours
| Type | Description |
|---|---|
send_chat_history
Extrayez l’historique des conversations d’une session OpenAI et envoyez-le à la plateforme MCP.
Cette méthode extrait les messages d’un objet session OpenAI à l’aide de get_items() et les envoie à la plateforme MCP pour la protection contre les menaces en temps réel.
async send_chat_history(turn_context: TurnContext, session: Session, limit: int | None = None, options: ToolOptions | None = None) -> OperationResult
Paramètres
| Nom | Description |
|---|---|
|
turn_context
Obligatoire
|
TurnContext à partir du Kit de développement logiciel (SDK) Agents contenant des informations de conversation. Doit avoir une activité valide avec conversation.id, activity.id et activity.text. |
|
session
Obligatoire
|
<xref:agents.memory.session.Session>
Instance de session OpenAI à partir de laquelle extraire les messages. Doit prendre en charge la méthode get_items() qui retourne une liste de TResponseInputItem. |
|
limit
|
Nombre maximal facultatif d’éléments à récupérer à partir de la session. Si aucun, récupère tous les éléments. Valeur par défaut: None
|
|
options
|
ToolOptions facultatifs pour la personnalisation. S’il n’est pas fourni, utilise les options par défaut avec orchestrator_name="OpenAI ». Valeur par défaut: None
|
Retours
| Type | Description |
|---|---|
|
OperationResult indiquant la réussite ou l’échec. En cas de réussite, retourne OperationResult.success(). En cas d’échec, retourne OperationResult.failed() avec les détails de l’erreur. |
Exceptions
| Type | Description |
|---|---|
|
Si turn_context est None ou si la session est None. |
Exemples
>>> 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
Envoyez des messages d’historique des conversations OpenAI à la plateforme MCP pour la protection contre les menaces.
Cette méthode accepte une liste de messages OpenAI TResponseInputItem, les convertit au format ChatHistoryMessage et les envoie à la plateforme MCP.
Note
Même si les messages sont vides ou que tous les messages sont filtrés pendant la conversion,
la demande sera toujours envoyée à la plateforme MCP. Cela garantit à l’utilisateur
le message de turn_context.activity.text est enregistré correctement pour
protection contre les menaces en temps réel.
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
Paramètres
| Nom | Description |
|---|---|
|
turn_context
Obligatoire
|
TurnContext à partir du Kit de développement logiciel (SDK) Agents contenant des informations de conversation. Doit avoir une activité valide avec conversation.id, activity.id et activity.text. |
|
messages
Obligatoire
|
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>]
Liste des messages OpenAI TResponseInputItem à envoyer. Prend en charge UserMessage, AssistantMessage, SystemMessage et d’autres types de messages OpenAI. Peut être vide : la demande est toujours envoyée pour inscrire le message de l’utilisateur à partir de turn_context.activity.text. |
|
options
|
ToolOptions facultatifs pour la personnalisation. S’il n’est pas fourni, utilise les options par défaut avec orchestrator_name="OpenAI ». Valeur par défaut: None
|
Retours
| Type | Description |
|---|---|
|
OperationResult indiquant la réussite ou l’échec. En cas de réussite, retourne OperationResult.success(). En cas d’échec, retourne OperationResult.failed() avec les détails de l’erreur. |
Exceptions
| Type | Description |
|---|---|
|
Si turn_context est None ou que les messages sont None. |
Exemples
>>> 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")