Closed eskaviam closed 1 week ago
@eskaviam Hello there! I'm a bot designed to help you with bug reports, questions, and contributing to the repository. I'm here to assist you while waiting for a human maintainer.
To resolve the 'requests' library not being defined error when making a POST request to the chat-messages endpoint in the Dify API version 0.6.12-fix1, ensure that the requests
library is imported at the beginning of your script. The provided code already includes the necessary import statement:
import requests
Make sure this import statement is present at the top of your script. If it is missing, add it to avoid the 'requests' library not being defined error. Here is the relevant part of the code with the import statement:
import requests
class DifyClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.dify.ai/v1"
def _send_request(self, method, endpoint, json=None, params=None, stream=False):
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
url = f"{self.base_url}{endpoint}"
response = requests.request(method, url, json=json, params=params, headers=headers, stream=stream)
return response
def _send_request_with_files(self, method, endpoint, data, files):
headers = {
"Authorization": f"Bearer {self.api_key}"
}
url = f"{self.base_url}{endpoint}"
response = requests.request(method, url, data=data, headers=headers, files=files)
return response
def message_feedback(self, message_id, rating, user):
data = {
"rating": rating,
"user": user
}
return self._send_request("POST", f"/messages/{message_id}/feedbacks", data)
def get_application_parameters(self, user):
params = {"user": user}
return self._send_request("GET", "/parameters", params=params)
def file_upload(self, user, files):
data = {
"user": user
}
return self._send_request_with_files("POST", "/files/upload", data=data, files=files)
class CompletionClient(DifyClient):
def create_completion_message(self, inputs, response_mode, user, files=None):
data = {
"inputs": inputs,
"response_mode": response_mode,
"user": user,
"files": files
}
return self._send_request("POST", "/completion-messages", data,
stream=True if response_mode == "streaming" else False)
class ChatClient(DifyClient):
def create_chat_message(self, inputs, query, user, response_mode="blocking", conversation_id=None, files=None):
data = {
"inputs": inputs,
"query": query,
"user": user,
"response_mode": response_mode,
"files": files
}
if conversation_id:
data["conversation_id"] = conversation_id
return self._send_request("POST", "/chat-messages", data,
stream=True if response_mode == "streaming" else False)
def get_conversation_messages(self, user, conversation_id=None, first_id=None, limit=None):
params = {"user": user}
if conversation_id:
params["conversation_id"] = conversation_id
if first_id:
params["first_id"] = first_id
if limit:
params["limit"] = limit
return self._send_request("GET", "/messages", params=params)
def get_conversations(self, user, last_id=None, limit=None, pinned=None):
params = {"user": user, "last_id": last_id, "limit": limit, "pinned": pinned}
return self._send_request("GET", "/conversations", params=params)
def rename_conversation(self, conversation_id, name, user):
data = {"name": name, "user": user}
return self._send_request("POST", f"/conversations/{conversation_id}/name", data)
Ensure that the requests
library is installed in your environment. You can install it using pip if it is not already installed:
pip install requests
Additionally, you can refer to the Dify API documentation for more details on making API requests. Here is an example of making a POST request to the chat-messages endpoint using the requests
library in Python:
import requests
import json
url = 'https://api.dify.ai/v1/chat-messages'
headers = {
'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
'Content-Type': 'application/json',
}
data = {
"inputs": {},
"query": "describe image",
"response_mode": "blocking",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://cloud.dify.ai/logo/logo-site.png"
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
Make sure to replace ENTER-YOUR-SECRET-KEY
with your actual API key [1][2].
To continue talking to Dosu, mention @dosu.
Self Checks
Dify version
0.6.12-fix1
Cloud or Self Hosted
Cloud
Steps to reproduce
Curl
curl -X POST 'https://api.dify.ai/v1/chat-messages' \ --header 'Authorization: Bearer {api_key}' \ --header 'Content-Type: application/json' \ --data-raw '{ "inputs": {}, "query": "describe image", "response_mode": "blocking", "conversation_id": "", "user": "abc-123", "files": [ { "type": "image", "transfer_method": "remote_url", "url": "https://cloud.dify.ai/logo/logo-site.png" } ] }'
✔️ Expected Behavior
Expected behaviour is returning the correct response
❌ Actual Behavior
Got this response instead
{ "code": "completion_request_error", "message": "[vertex_ai] Error: Failed to fetch image data from url https://cloud.dify.ai/logo/logo-site.png, name 'requests' is not defined", "status": 400 }