|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- # dify-client
-
- A Dify App Service-API Client, using for build a webapp by request Service-API
-
- ## Usage
-
- First, install `dify-client` python sdk package:
-
- ```
- pip install dify-client
- ```
-
- Write your code with sdk:
-
- - completion generate with `blocking` response_mode
-
- ```python
- from dify_client import CompletionClient
-
- api_key = "your_api_key"
-
- # Initialize CompletionClient
- completion_client = CompletionClient(api_key)
-
- # Create Completion Message using CompletionClient
- completion_response = completion_client.create_completion_message(inputs={"query": "What's the weather like today?"},
- response_mode="blocking", user="user_id")
- completion_response.raise_for_status()
-
- result = completion_response.json()
-
- print(result.get('answer'))
- ```
-
- - completion using vision model, like gpt-4-vision
-
- ```python
- from dify_client import CompletionClient
-
- api_key = "your_api_key"
-
- # Initialize CompletionClient
- completion_client = CompletionClient(api_key)
-
- files = [{
- "type": "image",
- "transfer_method": "remote_url",
- "url": "your_image_url"
- }]
-
- # files = [{
- # "type": "image",
- # "transfer_method": "local_file",
- # "upload_file_id": "your_file_id"
- # }]
-
- # Create Completion Message using CompletionClient
- completion_response = completion_client.create_completion_message(inputs={"query": "Describe the picture."},
- response_mode="blocking", user="user_id", files=files)
- completion_response.raise_for_status()
-
- result = completion_response.json()
-
- print(result.get('answer'))
- ```
-
- - chat generate with `streaming` response_mode
-
- ```python
- import json
- from dify_client import ChatClient
-
- api_key = "your_api_key"
-
- # Initialize ChatClient
- chat_client = ChatClient(api_key)
-
- # Create Chat Message using ChatClient
- chat_response = chat_client.create_chat_message(inputs={}, query="Hello", user="user_id", response_mode="streaming")
- chat_response.raise_for_status()
-
- for line in chat_response.iter_lines(decode_unicode=True):
- line = line.split('data:', 1)[-1]
- if line.strip():
- line = json.loads(line.strip())
- print(line.get('answer'))
- ```
-
- - chat using vision model, like gpt-4-vision
-
- ```python
- from dify_client import ChatClient
-
- api_key = "your_api_key"
-
- # Initialize ChatClient
- chat_client = ChatClient(api_key)
-
- files = [{
- "type": "image",
- "transfer_method": "remote_url",
- "url": "your_image_url"
- }]
-
- # files = [{
- # "type": "image",
- # "transfer_method": "local_file",
- # "upload_file_id": "your_file_id"
- # }]
-
- # Create Chat Message using ChatClient
- chat_response = chat_client.create_chat_message(inputs={}, query="Describe the picture.", user="user_id",
- response_mode="blocking", files=files)
- chat_response.raise_for_status()
-
- result = chat_response.json()
-
- print(result.get("answer"))
- ```
-
- - upload file when using vision model
-
- ```python
- from dify_client import DifyClient
-
- api_key = "your_api_key"
-
- # Initialize Client
- dify_client = DifyClient(api_key)
-
- file_path = "your_image_file_path"
- file_name = "panda.jpeg"
- mime_type = "image/jpeg"
-
- with open(file_path, "rb") as file:
- files = {
- "file": (file_name, file, mime_type)
- }
- response = dify_client.file_upload("user_id", files)
-
- result = response.json()
- print(f'upload_file_id: {result.get("id")}')
- ```
-
-
-
- - Others
-
- ```python
- from dify_client import ChatClient
-
- api_key = "your_api_key"
-
- # Initialize Client
- client = ChatClient(api_key)
-
- # Get App parameters
- parameters = client.get_application_parameters(user="user_id")
- parameters.raise_for_status()
-
- print('[parameters]')
- print(parameters.json())
-
- # Get Conversation List (only for chat)
- conversations = client.get_conversations(user="user_id")
- conversations.raise_for_status()
-
- print('[conversations]')
- print(conversations.json())
-
- # Get Message List (only for chat)
- messages = client.get_conversation_messages(user="user_id", conversation_id="conversation_id")
- messages.raise_for_status()
-
- print('[messages]')
- print(messages.json())
-
- # Rename Conversation (only for chat)
- rename_conversation_response = client.rename_conversation(conversation_id="conversation_id",
- name="new_name", user="user_id")
- rename_conversation_response.raise_for_status()
-
- print('[rename result]')
- print(rename_conversation_response.json())
- ```
-
- * Using the Workflow Client
- ```python
- import json
- import requests
- from dify_client import WorkflowClient
-
- api_key = "your_api_key"
-
- # Initialize Workflow Client
- client = WorkflowClient(api_key)
-
- # Prepare parameters for Workflow Client
- user_id = "your_user_id"
- context = "previous user interaction / metadata"
- user_prompt = "What is the capital of France?"
-
- inputs = {
- "context": context,
- "user_prompt": user_prompt,
- # Add other input fields expected by your workflow (e.g., additional context, task parameters)
-
- }
-
- # Set response mode (default: streaming)
- response_mode = "blocking"
-
- # Run the workflow
- response = client.run(inputs=inputs, response_mode=response_mode, user=user_id)
- response.raise_for_status()
-
- # Parse result
- result = json.loads(response.text)
-
- answer = result.get("data").get("outputs")
-
- print(answer["answer"])
-
- ```
|