Skip to content

Python: azure ai service model invoke fails with no_model_name error code in sk python #10339

Open
@PurnaChandraPanda

Description

@PurnaChandraPanda

Code snippet

import os
import asyncio
from semantic_kernel.contents.chat_history import ChatHistory
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatPromptExecutionSettings
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
from dotenv import load_dotenv

load_dotenv("../.env")

llm = AzureAIInferenceChatCompletion(
    endpoint=os.getenv("AZUREAI_INFERENCE_ENDPOINT"), # "https://{myresource}.services.ai.azure.com/models"
    api_key=os.getenv("AZUREAI_ENDPOINT_KEY"),
    ai_model_id="phi-4",
    service_id="phi-4",
)

# execution_settings = AzureAIInferenceChatPromptExecutionSettings(
#     max_tokens=100,
#     temperature=0.5,
#     top_p=0.9,
#     service_id="phi-4",
#     model_id="phi-4",
#     # extra_parameters={...},    # model-specific parameters
# )

execution_settings = PromptExecutionSettings(model="phi-4")

async def main():
    chat_history = ChatHistory(messages=[{"role": "user", "content": "Hello"}])
    
    response = await llm.get_chat_message_content(chat_history, 
                                                  execution_settings,
                                                  headers={"x-ms-model-mesh-model-name": "phi-4"},
                                                  )
    print(response)

if __name__ == "__main__":
    asyncio.run(main())

Error details

Traceback (most recent call last):
  File "/afh/projects/aiproj01-ea1be05d-2ca9-4751-94bd-64549ebf820f/shared/Users/pupanda/ai-foundation-models/ai-inference/phi/phi4-sk.py", line 41, in <module>
    asyncio.run(main())
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/afh/projects/aiproj01-ea1be05d-2ca9-4751-94bd-64549ebf820f/shared/Users/pupanda/ai-foundation-models/ai-inference/phi/phi4-sk.py", line 34, in main
    response = await llm.get_chat_message_content(chat_history,
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/site-packages/semantic_kernel/connectors/ai/chat_completion_client_base.py", line 197, in get_chat_message_content
    results = await self.get_chat_message_contents(chat_history=chat_history, settings=settings, **kwargs)
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/site-packages/semantic_kernel/connectors/ai/chat_completion_client_base.py", line 142, in get_chat_message_contents
    return await self._inner_get_chat_message_contents(chat_history, settings)
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/site-packages/semantic_kernel/connectors/ai/azure_ai_inference/services/azure_ai_inference_chat_completion.py", line 127, in _inner_get_chat_message_contents
    response: ChatCompletions = await self.client.complete(
  File "/anaconda/envs/azureml_py310_sdkv2/lib/python3.10/site-packages/azure/ai/inference/aio/_patch.py", line 670, in complete
    raise HttpResponseError(response=response)
azure.core.exceptions.HttpResponseError: (no_model_name) No model specified in request. Please provide a model name in the request body or as a x-ms-model-mesh-model-name header.
Code: no_model_name
Message: No model specified in request. Please provide a model name in the request body or as a x-ms-model-mesh-model-name header.
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fb32ae6c850>
Unclosed connector
connections: ['deque([(<aiohttp.client_proto.ResponseHandler object at 0x7fb322838640>, 2558.922774265)])']
connector: <aiohttp.connector.TCPConnector object at 0x7fb32ae6c9a0>

This error of no_model_name comes from azure-ai-inference in SK. SK wrapper is not able to pass model vaue to ChatcompletionClient. So, when client.complete() tried, it just says model name info is missing.

It looks like a bug. Does anyone have any insights if thing can be addressed from client side?

Metadata

Metadata

Assignees

Labels

pythonPull requests for the Python Semantic Kernel

Type

No type

Projects

  • Status

    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions