Skip to content

Instantly share code, notes, and snippets.

@tonybaloney
Created February 3, 2026 05:22
Show Gist options
  • Select an option

  • Save tonybaloney/503d97088852016a21db46f9d8780264 to your computer and use it in GitHub Desktop.

Select an option

Save tonybaloney/503d97088852016a21db46f9d8780264 to your computer and use it in GitHub Desktop.
Using Copilot SDK with Azure hosted models
import asyncio
import logging
import os
from copilot import CopilotClient
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
FOUNDRY_MODEL_URL = (
"https://xyz.openai.azure.com/openai/v1/" # Get from your Foundry deployment
)
# Set FOUNDRY_API_KEY environment variable too
async def main():
# Create and start client
client = CopilotClient()
await client.start()
logger.debug("Client started")
# Create a session
session = await client.create_session(
{
"model": "gpt-5.2-codex", # Model deployment name
"provider": {
"type": "openai",
"base_url": FOUNDRY_MODEL_URL,
"wire_api": "responses", # for GPT-5 modes, use "completions" for older models
"api_key": os.environ["FOUNDRY_API_KEY"],
},
}
)
# Wait for response using session.idle event
done = asyncio.Event()
def on_event(event):
logger.debug("Received event: %s", event.type.value)
if event.type.value == "assistant.message":
logger.info(event.data.content)
elif event.type.value == "session.error":
logger.error("Session error: %s", event.data.message)
elif event.type.value == "session.idle":
done.set()
else:
logger.debug("Unhandled event: %s", event.type.value)
session.on(on_event)
# Send a message and wait for completion
await session.send({"prompt": "What is 2+2?"})
logger.debug("Message sent, waiting for response...")
await done.wait()
logger.debug("Response complete")
# Clean up
await session.destroy()
await client.stop()
asyncio.run(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment