Skip to main content

Core component of the Microsoft Agents M365 Copilot Core Python SDK

Project description

Microsoft 365 Copilot APIs Python Core Client Library

The Microsoft 365 Copilot APIs Python Core Client Library contains core classes used by the Microsoft 365 Copilot APIs Library to send native HTTP requests to the Microsoft 365 Copilot APIs.

Note:

Because the Microsoft 365 Copilot APIs in the beta endpoint are subject to breaking changes, don't use a preview release of the client libraries in production apps.

Prerequisites

  • Python 3.9+

This library doesn't support older versions of Python.

Getting started

1. Register your application

To call the Copilot endpoints, your app must acquire an access token from the Microsoft identity platform. Learn more about this:

2. Install the required packages

pip install azure-identity
pip install python-dotenv

The python-dotenv is a utility library to load environment variables. Ensure you DO NOT commit the file holding your secrets.

You have to build microsoft-agents-m365copilot-core locally. To build it, run the following command from the root of the python folder:

pip install -r requirements-dev.txt

This will install the core library with the latest version attached to it in the environment.

Alternatively, you can switch to the root of the core library and run:

pip install -e .

This will install the core library and it's dependencies to the environment.

3. Create a .env file with the following values:

TENANT_ID = "YOUR_TENANT_ID"
CLIENT_ID = "YOUR_CLIENT_ID"

Note:

Your tenant must have a Microsoft 365 Copilot license.

4. Create a main.py file with the following snippet:

Note:

This example shows how to make a call to the Microsoft 365 Copilot Retrieval API using just the core library. Alternately, you can use the Microsoft 365 Copilot APIs Python Beta Client Library to create a request object and then run the POST method on the request.

import asyncio
import os
from datetime import datetime

from azure.identity import DeviceCodeCredential
from dotenv import load_dotenv 

from microsoft_agents_m365copilot_core.src._enums import APIVersion
from microsoft_agents_m365copilot_core.src.client_factory import  MicrosoftAgentsM365CopilotClientFactory

load_dotenv()

TENANT_ID = os.getenv("TENANT_ID")
CLIENT_ID = os.getenv("CLIENT_ID")

# Define a proper callback function that accepts all three parameters
def auth_callback(verification_uri: str, user_code: str, expires_on: datetime):
    print(f"\nTo sign in, use a web browser to open the page {verification_uri}")
    print(f"Enter the code {user_code} to authenticate.")
    print(f"The code will expire at {expires_on}")

# Create device code credential with correct callback
credentials = DeviceCodeCredential(
    client_id=CLIENT_ID,
    tenant_id=TENANT_ID,
    prompt_callback=auth_callback
)

client = MicrosoftAgentsM365CopilotClientFactory.create_with_default_middleware(api_version=APIVersion.beta)

client.base_url = "https://graph.microsoft.com/beta" # Make sure the base URL is set to beta

async def retrieve():
    try:
        # Kick off device code flow and get the token.
        loop = asyncio.get_running_loop()
        token = await loop.run_in_executor(None, lambda: credentials.get_token("https://graph.microsoft.com/.default"))

        # Set the access token.
        headers = {"Authorization": f"Bearer {token.token}"}

        # Print the URL being used.
        print(f"Using API base URL for incoming request: {client.base_url}\n")

        # Directly use httpx to test the endpoint.
        response = await client.post("https://graph.microsoft.com/beta/copilot/retrieval", json={
            "queryString": "What is the latest in my organization?",
            "dataSource": "sharePoint",
            "resourceMetadata": [
                "title",
                "author"
            ],
            "maximumNumberOfResults": "10"
        }, headers=headers)

        # Show the response
        print(f"Response HTTP status: {response.status_code}")
        print(f"Response JSON content: {response.text}")
            
    finally:
        print("Your call to the Copilot APIs is now complete.")

# Run the async function
asyncio.run(retrieve())

5. If successful, you should get a list of retrievalHits collection.

Note: This client library offers an asynchronous API by default. Async is a concurrency model that is far more efficient than multi-threading, and can provide significant performance benefits and enable the use of long-lived network connections such as WebSockets. We support popular python async environments such as asyncio, anyio or trio. For authentication you need to use one of the async credential classes from azure.identity.

Telemetry Metadata

This library captures metadata by default that provides insights into its usage and helps to improve the developer experience. This metadata includes the SdkVersion, RuntimeEnvironment and HostOs on which the client is running.

Issues

View or log issues on the Issues tab in the repo and tag them as python or python-core.

Copyright and license

Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT license.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microsoft_agents_m365copilot_core-1.0.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file microsoft_agents_m365copilot_core-1.0.0.tar.gz.

File metadata

File hashes

Hashes for microsoft_agents_m365copilot_core-1.0.0.tar.gz
Algorithm Hash digest
SHA256 75847c4344f10a76442eb74870fc4f533b56ddbb2b4d1b071cfdf5204ad92f65
MD5 5ad55406a1bee8391de73452e3549b5f
BLAKE2b-256 ecc36589643fa8fdf062fb8ccd1cb36bd87330949847d3dd0ab4122aa01565c6

See more details on using hashes here.

File details

Details for the file microsoft_agents_m365copilot_core-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for microsoft_agents_m365copilot_core-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d076beb1bffa5c99acdc46c0b90ea507d92da2fd081e41be5b7dde4f42ba1d57
MD5 8e9dbe8d450b691b914cf1b22678774e
BLAKE2b-256 1b45a438fd78546e5db9789cf35740320d392f3091d6baf5e5344dc6732d8f18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page