mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
Python: add AzureAIAgent client creation method. Handle user_agent. (#10538)
### Motivation and Context We weren't sending the user_agent as part of client creation for the AzureAIAgent. Create a convenience class method to create the AIProjectClient, which handles creating the user_agent. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description This PR: - adds a class method to create the AIProjectClient as part of AzureAIAgent. - handles configuring the user_agent. - fixes a check where annotation content indices might not be present - adds `/.default` to default entra scope - adds unit tests - closes #10527 - closes #10520 <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import AzureAISearchTool, ConnectionType
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
@@ -42,7 +41,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
@@ -51,7 +50,7 @@ async def main() -> None:
|
||||
|
||||
ai_search_conn_id = ""
|
||||
for conn in conn_list:
|
||||
if conn.connection_type == ConnectionType.AZURE_AI_SEARCH:
|
||||
if conn.connection_type == ConnectionType.AZURE_AI_SEARCH and conn.authentication_type == "ApiKey":
|
||||
ai_search_conn_id = conn.id
|
||||
break
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import CodeInterpreterTool, FilePurpose
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
@@ -24,7 +23,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import asyncio
|
||||
from typing import Annotated
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
from semantic_kernel.agents.azure_ai import AzureAIAgent, AzureAIAgentSettings
|
||||
@@ -36,7 +35,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
@@ -33,7 +33,22 @@ The .env should be placed in the root directory.
|
||||
|
||||
## Configuring the AI Project Client
|
||||
|
||||
Ensure that your Azure AI Agent resources are properly configured with at least a Basic or Standard SKU.
|
||||
Ensure that your Azure AI Agent resources are configured with at least a Basic or Standard SKU.
|
||||
|
||||
To begin, create the project client as follows:
|
||||
|
||||
```python
|
||||
ai_agent_settings = AzureAIAgentSettings.create()
|
||||
|
||||
async with DefaultAzureCredential() as credential:
|
||||
client = await AzureAIAgent.create_client(
|
||||
connection_string=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
credential=credential,
|
||||
)
|
||||
|
||||
async with client:
|
||||
# Your operational code here
|
||||
```
|
||||
|
||||
### Required Imports
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import asyncio
|
||||
from typing import Annotated
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
from semantic_kernel.agents.azure_ai import AzureAIAgent, AzureAIAgentSettings
|
||||
@@ -42,7 +41,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
+1
-2
@@ -2,7 +2,6 @@
|
||||
|
||||
import asyncio
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
from semantic_kernel.agents import AgentGroupChat
|
||||
@@ -51,7 +50,7 @@ async def main():
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
+1
-2
@@ -2,7 +2,6 @@
|
||||
|
||||
import asyncio
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import CodeInterpreterTool
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
@@ -22,7 +21,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
+1
-2
@@ -3,7 +3,6 @@
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import FileSearchTool, OpenAIFile, VectorStore
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
@@ -23,7 +22,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
+1
-2
@@ -4,7 +4,6 @@ import asyncio
|
||||
import json
|
||||
import os
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import (
|
||||
OpenApiAnonymousAuthDetails,
|
||||
OpenApiTool,
|
||||
@@ -27,7 +26,7 @@ async def main() -> None:
|
||||
|
||||
async with (
|
||||
DefaultAzureCredential() as creds,
|
||||
AIProjectClient.from_connection_string(
|
||||
AzureAIAgent.create_client(
|
||||
credential=creds,
|
||||
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
|
||||
) as client,
|
||||
|
||||
@@ -386,16 +386,16 @@ def generate_annotation_content(
|
||||
) -> AnnotationContent:
|
||||
"""Generate annotation content."""
|
||||
file_id = None
|
||||
if isinstance(annotation, MessageTextFilePathAnnotation):
|
||||
if isinstance(annotation, MessageTextFilePathAnnotation) and annotation.file_path is not None:
|
||||
file_id = annotation.file_path.file_id
|
||||
elif isinstance(annotation, MessageTextFileCitationAnnotation):
|
||||
elif isinstance(annotation, MessageTextFileCitationAnnotation) and annotation.file_citation is not None:
|
||||
file_id = annotation.file_citation.file_id
|
||||
|
||||
return AnnotationContent(
|
||||
file_id=file_id,
|
||||
quote=annotation.text,
|
||||
start_index=annotation.start_index,
|
||||
end_index=annotation.end_index,
|
||||
start_index=annotation.start_index if annotation.start_index is not None else None,
|
||||
end_index=annotation.end_index if annotation.end_index is not None else None,
|
||||
)
|
||||
|
||||
|
||||
@@ -413,6 +413,6 @@ def generate_streaming_annotation_content(
|
||||
return StreamingAnnotationContent(
|
||||
file_id=file_id,
|
||||
quote=annotation.text,
|
||||
start_index=annotation.start_index,
|
||||
end_index=annotation.end_index,
|
||||
start_index=annotation.start_index if annotation.start_index is not None else None,
|
||||
end_index=annotation.end_index if annotation.end_index is not None else None,
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import logging
|
||||
from collections.abc import AsyncIterable, Iterable
|
||||
from typing import TYPE_CHECKING, Any, ClassVar
|
||||
from typing import TYPE_CHECKING, Any, ClassVar, TypeVar
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import Agent as AzureAIAgentModel
|
||||
@@ -29,16 +29,24 @@ from semantic_kernel.prompt_template.prompt_template_config import PromptTemplat
|
||||
from semantic_kernel.utils.experimental_decorator import experimental_class
|
||||
from semantic_kernel.utils.naming import generate_random_ascii_name
|
||||
from semantic_kernel.utils.telemetry.agent_diagnostics.decorators import trace_agent_invocation
|
||||
from semantic_kernel.utils.telemetry.user_agent import (
|
||||
APP_INFO,
|
||||
SEMANTIC_KERNEL_USER_AGENT,
|
||||
)
|
||||
|
||||
logger: logging.Logger = logging.getLogger(__name__)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
from semantic_kernel.contents.chat_message_content import ChatMessageContent
|
||||
|
||||
AgentsApiResponseFormatOption = (
|
||||
str | AgentsApiResponseFormatMode | AgentsApiResponseFormat | ResponseFormatJsonSchemaType
|
||||
)
|
||||
|
||||
_T = TypeVar("_T", bound="AzureAIAgent")
|
||||
|
||||
|
||||
@experimental_class
|
||||
class AzureAIAgent(Agent):
|
||||
@@ -115,6 +123,27 @@ class AzureAIAgent(Agent):
|
||||
|
||||
super().__init__(**args)
|
||||
|
||||
@classmethod
|
||||
def create_client(
|
||||
cls: type[_T], credential: "DefaultAzureCredential", conn_str: str, **kwargs: Any
|
||||
) -> AIProjectClient:
|
||||
"""Create the Azure AI Project client using the connection string.
|
||||
|
||||
Args:
|
||||
credential: The credential
|
||||
conn_str: The connection string
|
||||
kwargs: Additional keyword arguments
|
||||
|
||||
Returns:
|
||||
AIProjectClient: The Azure AI Project client
|
||||
"""
|
||||
return AIProjectClient.from_connection_string(
|
||||
credential=credential,
|
||||
conn_str=conn_str,
|
||||
**({"user_agent": SEMANTIC_KERNEL_USER_AGENT} if APP_INFO else {}),
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
async def add_chat_message(self, thread_id: str, message: "ChatMessageContent") -> "ThreadMessage | None":
|
||||
"""Add a chat message to the thread.
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class AzureOpenAISettings(KernelBaseSettings):
|
||||
- api_version: str | None - The API version to use. The default value is "2024-02-01".
|
||||
(Env var AZURE_OPENAI_API_VERSION)
|
||||
- token_endpoint: str - The token endpoint to use to retrieve the authentication token.
|
||||
The default value is "https://cognitiveservices.azure.com".
|
||||
The default value is "https://cognitiveservices.azure.com/.default".
|
||||
(Env var AZURE_OPENAI_TOKEN_ENDPOINT)
|
||||
"""
|
||||
|
||||
@@ -89,7 +89,7 @@ class AzureOpenAISettings(KernelBaseSettings):
|
||||
base_url: HttpsUrl | None = None
|
||||
api_key: SecretStr | None = None
|
||||
api_version: str = DEFAULT_AZURE_API_VERSION
|
||||
token_endpoint: str = "https://cognitiveservices.azure.com"
|
||||
token_endpoint: str = "https://cognitiveservices.azure.com/.default"
|
||||
|
||||
def get_azure_openai_auth_token(self, token_endpoint: str | None = None) -> str | None:
|
||||
"""Retrieve a Microsoft Entra Auth Token for a given token endpoint for the use with Azure OpenAI.
|
||||
@@ -100,7 +100,7 @@ class AzureOpenAISettings(KernelBaseSettings):
|
||||
The `token_endpoint` argument takes precedence over the `token_endpoint` attribute.
|
||||
|
||||
Args:
|
||||
token_endpoint: The token endpoint to use. Defaults to `https://cognitiveservices.azure.com`.
|
||||
token_endpoint: The token endpoint to use. Defaults to `https://cognitiveservices.azure.com/.default`.
|
||||
|
||||
Returns:
|
||||
The Azure token or None if the token could not be retrieved.
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
from unittest.mock import AsyncMock, patch
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from azure.ai.projects.aio import AIProjectClient
|
||||
from azure.ai.projects.models import Agent as AzureAIAgentModel
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
|
||||
from semantic_kernel.agents.azure_ai.azure_ai_agent import AzureAIAgent
|
||||
from semantic_kernel.agents.channels.agent_channel import AgentChannel
|
||||
@@ -111,3 +112,27 @@ async def test_azure_ai_agent_create_channel():
|
||||
ch = await agent.create_channel()
|
||||
assert isinstance(ch, AgentChannel)
|
||||
assert ch.thread_id == "t"
|
||||
|
||||
|
||||
def test_create_client():
|
||||
conn_str = "endpoint;subscription_id;resource_group;project_name"
|
||||
credential = MagicMock(spec=DefaultAzureCredential)
|
||||
|
||||
with patch("azure.ai.projects.aio.AIProjectClient.from_connection_string") as mock_from_conn_str:
|
||||
mock_client = MagicMock(spec=AIProjectClient)
|
||||
mock_from_conn_str.return_value = mock_client
|
||||
|
||||
client = AzureAIAgent.create_client(
|
||||
credential=credential,
|
||||
conn_str=conn_str,
|
||||
extra_arg="extra_value",
|
||||
)
|
||||
|
||||
mock_from_conn_str.assert_called_once()
|
||||
_, actual_kwargs = mock_from_conn_str.call_args
|
||||
|
||||
assert actual_kwargs["credential"] is credential
|
||||
assert actual_kwargs["conn_str"] == conn_str
|
||||
assert actual_kwargs["extra_arg"] == "extra_value"
|
||||
assert actual_kwargs["user_agent"] is not None
|
||||
assert client is mock_client
|
||||
|
||||
Generated
+3
-15
@@ -2719,7 +2719,6 @@ name = "nvidia-cublas-cu12"
|
||||
version = "12.4.5.8"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7f/7f/7fbae15a3982dc9595e49ce0f19332423b260045d0a6afe93cdbe2f1f624/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0f8aa1706812e00b9f19dfe0cdb3999b092ccb8ca168c0db5b8ea712456fd9b3", size = 363333771 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ae/71/1c91302526c45ab494c23f61c7a84aa568b8c1f9d196efa5993957faf906/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:2fc8da60df463fdefa81e323eef2e36489e1c94335b5358bcb38360adf75ac9b", size = 363438805 },
|
||||
]
|
||||
|
||||
@@ -2728,7 +2727,6 @@ name = "nvidia-cuda-cupti-cu12"
|
||||
version = "12.4.127"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/93/b5/9fb3d00386d3361b03874246190dfec7b206fd74e6e287b26a8fcb359d95/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:79279b35cf6f91da114182a5ce1864997fd52294a87a16179ce275773799458a", size = 12354556 },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/42/f4f60238e8194a3106d06a058d494b18e006c10bb2b915655bd9f6ea4cb1/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9dec60f5ac126f7bb551c055072b69d85392b13311fcc1bcda2202d172df30fb", size = 13813957 },
|
||||
]
|
||||
|
||||
@@ -2737,7 +2735,6 @@ name = "nvidia-cuda-nvrtc-cu12"
|
||||
version = "12.4.127"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/77/aa/083b01c427e963ad0b314040565ea396f914349914c298556484f799e61b/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0eedf14185e04b76aa05b1fea04133e59f465b6f960c0cbf4e37c3cb6b0ea198", size = 24133372 },
|
||||
{ url = "https://files.pythonhosted.org/packages/2c/14/91ae57cd4db3f9ef7aa99f4019cfa8d54cb4caa7e00975df6467e9725a9f/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a178759ebb095827bd30ef56598ec182b85547f1508941a3d560eb7ea1fbf338", size = 24640306 },
|
||||
]
|
||||
|
||||
@@ -2746,7 +2743,6 @@ name = "nvidia-cuda-runtime-cu12"
|
||||
version = "12.4.127"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a1/aa/b656d755f474e2084971e9a297def515938d56b466ab39624012070cb773/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:961fe0e2e716a2a1d967aab7caee97512f71767f852f67432d572e36cb3a11f3", size = 894177 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ea/27/1795d86fe88ef397885f2e580ac37628ed058a92ed2c39dc8eac3adf0619/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:64403288fa2136ee8e467cdc9c9427e0434110899d07c779f25b5c068934faa5", size = 883737 },
|
||||
]
|
||||
|
||||
@@ -2769,7 +2765,6 @@ dependencies = [
|
||||
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/8a/0e728f749baca3fbeffad762738276e5df60851958be7783af121a7221e7/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399", size = 211422548 },
|
||||
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 },
|
||||
]
|
||||
|
||||
@@ -2778,7 +2773,6 @@ name = "nvidia-curand-cu12"
|
||||
version = "10.3.5.147"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/80/9c/a79180e4d70995fdf030c6946991d0171555c6edf95c265c6b2bf7011112/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1f173f09e3e3c76ab084aba0de819c49e56614feae5c12f69883f4ae9bb5fad9", size = 56314811 },
|
||||
{ url = "https://files.pythonhosted.org/packages/8a/6d/44ad094874c6f1b9c654f8ed939590bdc408349f137f9b98a3a23ccec411/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a88f583d4e0bb643c49743469964103aa59f7f708d862c3ddb0fc07f851e3b8b", size = 56305206 },
|
||||
]
|
||||
|
||||
@@ -2792,7 +2786,6 @@ dependencies = [
|
||||
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/46/6b/a5c33cf16af09166845345275c34ad2190944bcc6026797a39f8e0a282e0/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e", size = 127634111 },
|
||||
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 },
|
||||
]
|
||||
|
||||
@@ -2804,7 +2797,6 @@ dependencies = [
|
||||
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/96/a9/c0d2f83a53d40a4a41be14cea6a0bf9e668ffcf8b004bd65633f433050c0/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3", size = 207381987 },
|
||||
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 },
|
||||
]
|
||||
|
||||
@@ -2813,7 +2805,6 @@ name = "nvidia-cusparselt-cu12"
|
||||
version = "0.6.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/98/8e/675498726c605c9441cf46653bd29cb1b8666da1fb1469ffa25f67f20c58/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:067a7f6d03ea0d4841c85f0c6f1991c5dda98211f6302cb83a4ab234ee95bef8", size = 149422781 },
|
||||
{ url = "https://files.pythonhosted.org/packages/78/a8/bcbb63b53a4b1234feeafb65544ee55495e1bb37ec31b999b963cbccfd1d/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:df2c24502fd76ebafe7457dbc4716b2fec071aabaed4fb7691a201cde03704d9", size = 150057751 },
|
||||
]
|
||||
|
||||
@@ -2830,7 +2821,6 @@ name = "nvidia-nvjitlink-cu12"
|
||||
version = "12.4.127"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/02/45/239d52c05074898a80a900f49b1615d81c07fceadd5ad6c4f86a987c0bc4/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4abe7fef64914ccfa909bc2ba39739670ecc9e820c83ccc7a6ed414122599b83", size = 20552510 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ff/ff/847841bacfbefc97a00036e0fce5a0f086b640756dc38caea5e1bb002655/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57", size = 21066810 },
|
||||
]
|
||||
|
||||
@@ -2839,7 +2829,6 @@ name = "nvidia-nvtx-cu12"
|
||||
version = "12.4.127"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/06/39/471f581edbb7804b39e8063d92fc8305bdc7a80ae5c07dbe6ea5c50d14a5/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7959ad635db13edf4fc65c06a6e9f9e55fc2f92596db928d169c0bb031e88ef3", size = 100417 },
|
||||
{ url = "https://files.pythonhosted.org/packages/87/20/199b8713428322a2f22b722c62b8cc278cc53dffa9705d744484b5035ee9/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a", size = 99144 },
|
||||
]
|
||||
|
||||
@@ -2906,8 +2895,8 @@ name = "onnxruntime-genai"
|
||||
version = "0.5.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "numpy", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
|
||||
{ name = "onnxruntime", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
|
||||
{ name = "numpy", marker = "(python_full_version < '3.13' and sys_platform == 'darwin') or (python_full_version < '3.13' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform == 'win32')" },
|
||||
{ name = "onnxruntime", marker = "(python_full_version < '3.13' and sys_platform == 'darwin') or (python_full_version < '3.13' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform == 'win32')" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/52/35/22a421f852eb14f47c33a4dd4c3ef58a2f3d5a96be8bb6d6cc271b2a0e83/onnxruntime_genai-0.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:cd322ead0027fbfa309e7be76c4512157ad369dc189ab3334a58a199b4f58a02", size = 769921 },
|
||||
@@ -4770,7 +4759,6 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "semantic-kernel"
|
||||
version = "1.21.0"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "aiohttp", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
|
||||
@@ -4909,7 +4897,7 @@ requires-dist = [
|
||||
{ name = "jinja2", specifier = "~=3.1" },
|
||||
{ name = "milvus", marker = "sys_platform != 'win32' and extra == 'milvus'", specifier = ">=2.3,<2.3.8" },
|
||||
{ name = "mistralai", marker = "extra == 'mistralai'", specifier = ">=1.2,<2.0" },
|
||||
{ name = "motor", marker = "extra == 'mongo'", specifier = ">=3.3.2,<3.7.0" },
|
||||
{ name = "motor", marker = "extra == 'mongo'", specifier = ">=3.3.2,<3.8.0" },
|
||||
{ name = "nest-asyncio", specifier = "~=1.6" },
|
||||
{ name = "numpy", marker = "python_full_version < '3.12'", specifier = ">=1.25.0" },
|
||||
{ name = "numpy", marker = "python_full_version >= '3.12'", specifier = ">=1.26.0" },
|
||||
|
||||
Reference in New Issue
Block a user