使用dify搭建了本地模型,设计了一个工作流。
使用python调用dify的api接口。
Python基本 dify.py如下
import requests
class DifyChat:
def __init__(self, api_url, api_key):
self.api_url = api_url
self.api_key = api_key
self.headers = {
'Authorization': f'Bearer {self.api_key}',
'Content-Type': 'application/json'
}
def create_chat(self, chat_name):
url = f'{self.api_url}/chats/create'
data = {'chat_name': chat_name}
response = requests.post(url, json=data, headers=self.headers)
return response.json()
def send(self, message,file_id):
url = f'{self.api_url}/chat-messages'
data = {
"inputs":{},
"files": [{
"type": "image",
"transfer_method": "local_file",
"upload_file_id": file_id
}],
"query": message,
"response_mode": "blocking",
"conversation_id": "",
"user": "abc-123"
}
response = requests.post(url, json=data, headers=self.headers)
return response.json()
def delete(self,conver_id):
url=f'{self.api_url}/conversations/{conver_id}'
data = {
"user": "abc-123"
}
response = requests.delete(url, json=data, headers=self.headers)
return response.json()
def upload_file(self, file_path):
url = f'{self.api_url}/files/upload'
files = {'file': ("a.jpg", open(file_path, 'rb'), 'image/jpg')}
headers={
'Authorization': f'Bearer {self.api_key}',
"user":"abc-12"
}
response = requests.post(url, files=files, headers=headers)
return response.json()
# 示例
if __name__ == "__main__":
api_url = "http://127.0.0.1/v1"
api_key = "app-xxxxxxxxxxxxxxxxxxxx"
chat = DifyChat(api_url, api_key)
# 发送消息
ret=chat.upload_file("./a.jpg")
file_id=ret["id"]
ret = chat.send(".",file_id)
message_id=ret["message_id"]
conver_id=ret["conversation_id"]
ret=chat.delete(conver_id)
print(ret)
# print(ret["answer"])