mirror of
https://github.com/langgenius/dify.git
synced 2024-11-15 19:22:36 +08:00
add workflowClient ,fix rename bug (#7352)
This commit is contained in:
parent
5a729a69cd
commit
7d4a0a417a
28
sdks/nodejs-client/index.d.ts
vendored
28
sdks/nodejs-client/index.d.ts
vendored
|
@ -33,6 +33,10 @@ export declare class DifyClient {
|
|||
getApplicationParameters(user: User): Promise<any>;
|
||||
|
||||
fileUpload(data: FormData): Promise<any>;
|
||||
|
||||
textToAudio(text: string ,user: string, streaming?: boolean): Promise<any>;
|
||||
|
||||
getMeta(user: User): Promise<any>;
|
||||
}
|
||||
|
||||
export declare class CompletionClient extends DifyClient {
|
||||
|
@ -54,6 +58,18 @@ export declare class ChatClient extends DifyClient {
|
|||
files?: File[] | null
|
||||
): Promise<any>;
|
||||
|
||||
getSuggested(message_id: string, user: User): Promise<any>;
|
||||
|
||||
stopMessage(task_id: string, user: User) : Promise<any>;
|
||||
|
||||
|
||||
getConversations(
|
||||
user: User,
|
||||
first_id?: string | null,
|
||||
limit?: number | null,
|
||||
pinned?: boolean | null
|
||||
): Promise<any>;
|
||||
|
||||
getConversationMessages(
|
||||
user: User,
|
||||
conversation_id?: string,
|
||||
|
@ -61,9 +77,15 @@ export declare class ChatClient extends DifyClient {
|
|||
limit?: number | null
|
||||
): Promise<any>;
|
||||
|
||||
getConversations(user: User, first_id?: string | null, limit?: number | null, pinned?: boolean | null): Promise<any>;
|
||||
|
||||
renameConversation(conversation_id: string, name: string, user: User): Promise<any>;
|
||||
renameConversation(conversation_id: string, name: string, user: User,auto_generate:boolean): Promise<any>;
|
||||
|
||||
deleteConversation(conversation_id: string, user: User): Promise<any>;
|
||||
|
||||
audioToText(data: FormData): Promise<any>;
|
||||
}
|
||||
|
||||
export declare class WorkflowClient extends DifyClient {
|
||||
run(inputs: any, user: User, stream?: boolean,): Promise<any>;
|
||||
|
||||
stop(task_id: string, user: User): Promise<any>;
|
||||
}
|
|
@ -2,30 +2,55 @@ import axios from "axios";
|
|||
export const BASE_URL = "https://api.dify.ai/v1";
|
||||
|
||||
export const routes = {
|
||||
application: {
|
||||
method: "GET",
|
||||
url: () => `/parameters`,
|
||||
},
|
||||
// app's
|
||||
feedback: {
|
||||
method: "POST",
|
||||
url: (message_id) => `/messages/${message_id}/feedbacks`,
|
||||
},
|
||||
application: {
|
||||
method: "GET",
|
||||
url: () => `/parameters`,
|
||||
},
|
||||
fileUpload: {
|
||||
method: "POST",
|
||||
url: () => `/files/upload`,
|
||||
},
|
||||
textToAudio: {
|
||||
method: "POST",
|
||||
url: () => `/text-to-audio`,
|
||||
},
|
||||
getMeta: {
|
||||
method: "GET",
|
||||
url: () => `/meta`,
|
||||
},
|
||||
|
||||
// completion's
|
||||
createCompletionMessage: {
|
||||
method: "POST",
|
||||
url: () => `/completion-messages`,
|
||||
},
|
||||
|
||||
// chat's
|
||||
createChatMessage: {
|
||||
method: "POST",
|
||||
url: () => `/chat-messages`,
|
||||
},
|
||||
getConversationMessages: {
|
||||
getSuggested:{
|
||||
method: "GET",
|
||||
url: () => `/messages`,
|
||||
url: (message_id) => `/messages/${message_id}/suggested`,
|
||||
},
|
||||
stopChatMessage: {
|
||||
method: "POST",
|
||||
url: (task_id) => `/chat-messages/${task_id}/stop`,
|
||||
},
|
||||
getConversations: {
|
||||
method: "GET",
|
||||
url: () => `/conversations`,
|
||||
},
|
||||
getConversationMessages: {
|
||||
method: "GET",
|
||||
url: () => `/messages`,
|
||||
},
|
||||
renameConversation: {
|
||||
method: "POST",
|
||||
url: (conversation_id) => `/conversations/${conversation_id}/name`,
|
||||
|
@ -34,14 +59,21 @@ export const routes = {
|
|||
method: "DELETE",
|
||||
url: (conversation_id) => `/conversations/${conversation_id}`,
|
||||
},
|
||||
fileUpload: {
|
||||
audioToText: {
|
||||
method: "POST",
|
||||
url: () => `/files/upload`,
|
||||
url: () => `/audio-to-text`,
|
||||
},
|
||||
|
||||
// workflow‘s
|
||||
runWorkflow: {
|
||||
method: "POST",
|
||||
url: () => `/workflows/run`,
|
||||
},
|
||||
stopWorkflow: {
|
||||
method: "POST",
|
||||
url: (task_id) => `/workflows/${task_id}/stop`,
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
export class DifyClient {
|
||||
|
@ -129,6 +161,31 @@ export class DifyClient {
|
|||
}
|
||||
);
|
||||
}
|
||||
|
||||
textToAudio(text, user, streaming = false) {
|
||||
const data = {
|
||||
text,
|
||||
user,
|
||||
streaming
|
||||
};
|
||||
return this.sendRequest(
|
||||
routes.textToAudio.method,
|
||||
routes.textToAudio.url(),
|
||||
data,
|
||||
null,
|
||||
streaming
|
||||
);
|
||||
}
|
||||
|
||||
getMeta(user) {
|
||||
const params = { user };
|
||||
return this.sendRequest(
|
||||
routes.meta.method,
|
||||
routes.meta.url(),
|
||||
null,
|
||||
params
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class CompletionClient extends DifyClient {
|
||||
|
@ -191,6 +248,34 @@ export class ChatClient extends DifyClient {
|
|||
);
|
||||
}
|
||||
|
||||
getSuggested(message_id, user) {
|
||||
const data = { user };
|
||||
return this.sendRequest(
|
||||
routes.getSuggested.method,
|
||||
routes.getSuggested.url(message_id),
|
||||
data
|
||||
);
|
||||
}
|
||||
|
||||
stopMessage(task_id, user) {
|
||||
const data = { user };
|
||||
return this.sendRequest(
|
||||
routes.stopChatMessage.method,
|
||||
routes.stopChatMessage.url(task_id),
|
||||
data
|
||||
);
|
||||
}
|
||||
|
||||
getConversations(user, first_id = null, limit = null, pinned = null) {
|
||||
const params = { user, first_id: first_id, limit, pinned };
|
||||
return this.sendRequest(
|
||||
routes.getConversations.method,
|
||||
routes.getConversations.url(),
|
||||
null,
|
||||
params
|
||||
);
|
||||
}
|
||||
|
||||
getConversationMessages(
|
||||
user,
|
||||
conversation_id = "",
|
||||
|
@ -213,16 +298,6 @@ export class ChatClient extends DifyClient {
|
|||
);
|
||||
}
|
||||
|
||||
getConversations(user, first_id = null, limit = null, pinned = null) {
|
||||
const params = { user, first_id: first_id, limit, pinned };
|
||||
return this.sendRequest(
|
||||
routes.getConversations.method,
|
||||
routes.getConversations.url(),
|
||||
null,
|
||||
params
|
||||
);
|
||||
}
|
||||
|
||||
renameConversation(conversation_id, name, user, auto_generate) {
|
||||
const data = { name, user, auto_generate };
|
||||
return this.sendRequest(
|
||||
|
@ -240,4 +315,46 @@ export class ChatClient extends DifyClient {
|
|||
data
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
audioToText(data) {
|
||||
return this.sendRequest(
|
||||
routes.audioToText.method,
|
||||
routes.audioToText.url(),
|
||||
data,
|
||||
null,
|
||||
false,
|
||||
{
|
||||
"Content-Type": 'multipart/form-data'
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class WorkflowClient extends DifyClient {
|
||||
run(inputs,user,stream) {
|
||||
const data = {
|
||||
inputs,
|
||||
response_mode: stream ? "streaming" : "blocking",
|
||||
user
|
||||
};
|
||||
|
||||
return this.sendRequest(
|
||||
routes.runWorkflow.method,
|
||||
routes.runWorkflow.url(),
|
||||
data,
|
||||
null,
|
||||
stream
|
||||
);
|
||||
}
|
||||
|
||||
stop(task_id, user) {
|
||||
const data = { user };
|
||||
return this.sendRequest(
|
||||
routes.stopWorkflow.method,
|
||||
routes.stopWorkflow.url(task_id),
|
||||
data
|
||||
);
|
||||
}
|
||||
}
|
|
@ -128,6 +128,28 @@ class ChatClient extends DifyClient {
|
|||
|
||||
return $this->send_request('POST', 'chat-messages', $data, null, $response_mode === 'streaming');
|
||||
}
|
||||
|
||||
public function get_suggestions($message_id, $user) {
|
||||
$params = [
|
||||
'user' => $user
|
||||
]
|
||||
return $this->send_request('GET', "messages/{$message_id}/suggested", null, $params);
|
||||
}
|
||||
|
||||
public function stop_message($task_id, $user) {
|
||||
$data = ['user' => $user];
|
||||
return $this->send_request('POST', "chat-messages/{$task_id}/stop", $data);
|
||||
}
|
||||
|
||||
public function get_conversations($user, $first_id = null, $limit = null, $pinned = null) {
|
||||
$params = [
|
||||
'user' => $user,
|
||||
'first_id' => $first_id,
|
||||
'limit' => $limit,
|
||||
'pinned'=> $pinned,
|
||||
];
|
||||
return $this->send_request('GET', 'conversations', null, $params);
|
||||
}
|
||||
|
||||
public function get_conversation_messages($user, $conversation_id = null, $first_id = null, $limit = null) {
|
||||
$params = ['user' => $user];
|
||||
|
@ -144,35 +166,23 @@ class ChatClient extends DifyClient {
|
|||
|
||||
return $this->send_request('GET', 'messages', null, $params);
|
||||
}
|
||||
|
||||
|
||||
public function stop_message($task_id, $user) {
|
||||
$data = ['user' => $user];
|
||||
return $this->send_request('POST', "chat-messages/{$task_id}/stop", $data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function get_conversations($user, $first_id = null, $limit = null, $pinned = null) {
|
||||
$params = [
|
||||
'user' => $user,
|
||||
'first_id' => $first_id,
|
||||
'limit' => $limit,
|
||||
'pinned'=> $pinned,
|
||||
];
|
||||
return $this->send_request('GET', 'conversations', null, $params);
|
||||
}
|
||||
|
||||
public function rename_conversation($conversation_id, $name, $user) {
|
||||
public function rename_conversation($conversation_id, $name,$auto_generate, $user) {
|
||||
$data = [
|
||||
'name' => $name,
|
||||
'user' => $user,
|
||||
'auto_generate' => $auto_generate
|
||||
];
|
||||
return $this->send_request('PATCH', "conversations/{$conversation_id}", $data);
|
||||
}
|
||||
|
||||
public function delete_conversation($conversation_id, $user) {
|
||||
$data = [
|
||||
'user' => $user,
|
||||
];
|
||||
return $this->send_request('DELETE', "conversations/{$conversation_id}", $data);
|
||||
}
|
||||
|
||||
public function audio_to_text($audio_file, $user) {
|
||||
$data = [
|
||||
'user' => $user,
|
||||
|
@ -184,11 +194,23 @@ class ChatClient extends DifyClient {
|
|||
|
||||
}
|
||||
|
||||
|
||||
public function get_suggestions($message_id, $user) {
|
||||
$params = [
|
||||
'user' => $user
|
||||
]
|
||||
return $this->send_request('GET', "messages/{$message_id}/suggested", null, $params);
|
||||
}
|
||||
}
|
||||
|
||||
class WorkflowClient extends DifyClient{
|
||||
public function run($inputs, $response_mode, $user) {
|
||||
$data = [
|
||||
'inputs' => $inputs,
|
||||
'response_mode' => $response_mode,
|
||||
'user' => $user,
|
||||
];
|
||||
return $this->send_request('POST', 'workflows/run', $data);
|
||||
}
|
||||
|
||||
public function stop($task_id, $user) {
|
||||
$data = [
|
||||
'user' => $user,
|
||||
];
|
||||
return $this->send_request('POST', "workflows/tasks/{$task_id}/stop",$data);
|
||||
}
|
||||
|
||||
}
|
|
@ -16,6 +16,7 @@ class DifyClient:
|
|||
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 = {
|
||||
|
@ -26,24 +27,24 @@ class DifyClient:
|
|||
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)
|
||||
|
||||
|
||||
def text_to_audio(self, text:str, user:str, streaming:bool=False):
|
||||
data = {
|
||||
"text": text,
|
||||
|
@ -83,13 +84,19 @@ class ChatClient(DifyClient):
|
|||
|
||||
return self._send_request("POST", "/chat-messages", data,
|
||||
stream=True if response_mode == "streaming" else False)
|
||||
|
||||
def get_suggested(self, message_id, user:str):
|
||||
params = {"user": user}
|
||||
return self._send_request("GET", f"/messages/{message_id}/suggested", params=params)
|
||||
|
||||
def stop_message(self, task_id, user):
|
||||
data = {"user": user}
|
||||
return self._send_request("POST", f"/chat-messages/{task_id}/stop", data)
|
||||
|
||||
|
||||
|
||||
|
||||
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 get_conversation_messages(self, user, conversation_id=None, first_id=None, limit=None):
|
||||
params = {"user": user}
|
||||
|
||||
|
@ -101,14 +108,14 @@ class ChatClient(DifyClient):
|
|||
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}
|
||||
|
||||
def rename_conversation(self, conversation_id, name,auto_generate:bool, user:str):
|
||||
data = {"name": name, "auto_generate": auto_generate,"user": user}
|
||||
return self._send_request("POST", f"/conversations/{conversation_id}/name", data)
|
||||
|
||||
def delete_conversation(self, conversation_id, user):
|
||||
data = {"user": user}
|
||||
return self._send_request("DELETE", f"/conversations/{conversation_id}", data)
|
||||
|
||||
def audio_to_text(self, audio_file, user):
|
||||
data = {"user": user}
|
||||
|
@ -116,7 +123,11 @@ class ChatClient(DifyClient):
|
|||
return self._send_request_with_files("POST", "/audio-to-text", data, files)
|
||||
|
||||
|
||||
def get_suggested(self, message_id, user:str):
|
||||
params = {"user": user}
|
||||
return self._send_request("GET", f"/messages/{message_id}/suggested", params=params)
|
||||
|
||||
class WorkflowClient(DifyClient):
|
||||
def run(self, inputs:dict, response_mode:str="streaming", user:str="abc-123"):
|
||||
data = {"inputs": inputs, "response_mode": response_mode, "user": user}
|
||||
return self._send_request("POST", "/workflows/run", data)
|
||||
|
||||
def stop(self, task_id, user):
|
||||
data = {"user": user}
|
||||
return self._send_request("POST", f"/workflows/tasks/{task_id}/stop", data)
|
||||
|
|
Loading…
Reference in New Issue
Block a user