Last active
November 25, 2025 22:25
-
-
Save pamelafox/937c420a452195f7096f68bdcc27fe88 to your computer and use it in GitHub Desktop.
Claude with Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| from anthropic import AnthropicFoundry | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| endpoint = "https://pf-claude-foundry-proje-resource.openai.azure.com/anthropic" | |
| deployment_name = "claude-sonnet-4-5" | |
| client = AnthropicFoundry( | |
| api_key=os.environ["CLAUDE_API_KEY"], | |
| base_url=endpoint | |
| ) | |
| message = client.messages.create( | |
| model=deployment_name, | |
| messages=[ | |
| {"role": "user", "content": "What is the capital of France?"} | |
| ], | |
| max_tokens=1024, | |
| ) | |
| print(message.content) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from openai import OpenAI | |
| from azure.identity import DefaultAzureCredential, get_bearer_token_provider | |
| token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://ai.azure.com/.default") | |
| client = OpenAI( | |
| base_url="https://pf-claude-foundry-proje-resource.services.ai.azure.com/api/projects/pf-claude-foundry-project/openai", | |
| api_key=token_provider, | |
| default_query={"api-version": "2025-11-15-preview"} | |
| ) | |
| response = client.responses.create( | |
| model="claude-sonnet-4-5", | |
| input="Write a one-sentence bedtime story about a unicorn." | |
| ) | |
| print(f"Response from model: {response.model}:\n\n{response.output_text}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from azure.identity import DefaultAzureCredential | |
| from azure.ai.projects import AIProjectClient | |
| project_client = AIProjectClient( | |
| endpoint="https://pf-claude-foundry-proje-resource.services.ai.azure.com/api/projects/pf-claude-foundry-project", | |
| credential=DefaultAzureCredential(), | |
| ) | |
| openai_client = project_client.get_openai_client() | |
| response = openai_client.responses.create( | |
| model="claude-sonnet-4-5", | |
| input="What is the capital/major city of France?", | |
| ) | |
| print(response.model_dump_json(indent=2)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import asyncio | |
| import os | |
| from azure.identity.aio import AzureDeveloperCliCredential, get_bearer_token_provider | |
| from dotenv import load_dotenv | |
| from openai import AsyncOpenAI | |
| from pydantic_ai import ModelRequest, UserPromptPart, ModelResponse | |
| from pydantic_ai.models import ModelRequestParameters | |
| from pydantic_ai.models.openai import OpenAIResponsesModel | |
| from pydantic_ai.providers.openai import OpenAIProvider | |
| load_dotenv(override=True) | |
| async_credential = None | |
| async_credential = AzureDeveloperCliCredential() | |
| token_provider = get_bearer_token_provider( | |
| AzureDeveloperCliCredential(tenant_id=os.environ["AZURE_TENANT_ID"]), "https://ai.azure.com/.default") | |
| client = AsyncOpenAI( | |
| base_url="https://pf-claude-foundry-proje-resource.services.ai.azure.com/api/projects/pf-claude-foundry-project/openai", | |
| api_key=token_provider, | |
| default_query={"api-version": "2025-11-15-preview"} | |
| ) | |
| model = OpenAIResponsesModel( | |
| "claude-sonnet-4-5", | |
| provider=OpenAIProvider(openai_client=client) | |
| ) | |
| async def main(): | |
| response:ModelResponse = await model.request([ModelRequest(parts=[UserPromptPart(content="What is the capital of France?")])], | |
| model_settings=None, | |
| model_request_parameters=ModelRequestParameters()) | |
| print(f"Response from model: {response.text}") | |
| if async_credential: | |
| await async_credential.close() | |
| if __name__ == "__main__": | |
| asyncio.run(main()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import asyncio | |
| import os | |
| from azure.identity.aio import AzureDeveloperCliCredential, get_bearer_token_provider | |
| from dotenv import load_dotenv | |
| from openai import AsyncOpenAI | |
| from pydantic_ai import Agent | |
| from pydantic_ai.models.openai import OpenAIResponsesModel | |
| from pydantic_ai.providers.openai import OpenAIProvider | |
| load_dotenv(override=True) | |
| async_credential = AzureDeveloperCliCredential() | |
| token_provider = get_bearer_token_provider( | |
| AzureDeveloperCliCredential(tenant_id=os.environ["AZURE_TENANT_ID"]), "https://ai.azure.com/.default") | |
| client = AsyncOpenAI( | |
| base_url="https://pf-claude-foundry-proje-resource.services.ai.azure.com/api/projects/pf-claude-foundry-project/openai", | |
| api_key=token_provider, | |
| default_query={"api-version": "2025-11-15-preview"} | |
| ) | |
| model = OpenAIResponsesModel( | |
| "claude-sonnet-4-5", | |
| provider=OpenAIProvider(openai_client=client) | |
| ) | |
| agent: Agent[None, str] = Agent( | |
| model, | |
| instructions="You are a Spanish tutor. Help the user learn Spanish. ONLY respond in Spanish.", | |
| output_type=str, | |
| ) | |
| async def main(): | |
| result = await agent.run("oh hey how are you?") | |
| print(result.output) | |
| if async_credential: | |
| await async_credential.close() | |
| if __name__ == "__main__": | |
| asyncio.run(main()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment