Install Required Packages
- Ensure that you have the `requests` and `azure-ai-textanalytics` libraries installed to interact with the Azure Cognitive Services APIs. You can install them using pip:
pip install requests azure-ai-textanalytics
Set Up Your Environment
- Create a new Python script and import the necessary libraries. Also, set your Azure Cognitive Services endpoint and API key environment variables.
import requests
import os
# Set your environment variables with appropriate values
endpoint = os.getenv('AZURE_QNA_ENDPOINT')
api_key = os.getenv('AZURE_QNA_API_KEY')
Build the Request URL
- Use the endpoint from your Azure account to build the URL for your requests. Typically, the URL format should look like `https://YOUR-ENDPOINT.azurewebsites.net/qnamaker/v5.0-preview.1/knowledgebases/YOUR-KB-ID/generateanswer`.
knowledge_base_id = 'your-knowledgebase-id' # Replace with your knowledge base ID
generate_answer_url = f"{endpoint}/qnamaker/v5.0-preview.1/knowledgebases/{knowledge_base_id}/generateanswer"
Prepare the Request Headers
- Prepare headers including the `Ocp-Apim-Subscription-Key` required for authentication and `Content-Type` to specify that you are sending JSON data.
headers = {
'Ocp-Apim-Subscription-Key': api_key,
'Content-Type': 'application/json'
}
Create the Request Payload
- Prepare a JSON payload containing the user question. The structure usually requires a "question" field, but this might vary slightly depending on your specific configuration. Always refer to the official API documentation for the most accurate structure.
payload = {
'question': 'What is Azure Cognitive Services?'
}
Make the API Call
- Use the `requests.post` method to send your data to the QnA Maker API and retrieve the response.
response = requests.post(generate_answer_url, headers=headers, json=payload)
if response.status_code == 200:
answer_json = response.json()
print("QnA Maker Response: ", answer_json["answers"][0]["answer"])
else:
print("Error: Unable to fetch data from QnA Maker API. Status Code: ", response.status_code)
Handle API Responses
- Once you've received the response, process it accordingly. The response might contain multiple answers. It's essential to check the structure of the JSON response and extract the required information.
Considerations for Advanced Usage
- When designing a comprehensive application, consider implementing exception handling, logging, and retries for more resilient service interaction.
- For larger applications, you might need to break down the logic into separate functions or classes to improve code maintainability and readability.