Spaces:
Sleeping
Sleeping
| # dify-client-python | |
| Welcome to the `dify-client-python` repository! This Python package provides a convenient and powerful interface to | |
| interact with the Dify API, enabling developers to integrate a wide range of features into their applications with ease. | |
| ## Main Features | |
| * **Synchronous and Asynchronous Support**: The client offers both synchronous and asynchronous methods, allowing for | |
| flexible integration into various Python codebases and frameworks. | |
| * **Stream and Non-stream Support**: Seamlessly work with both streaming and non-streaming endpoints of the Dify API for | |
| real-time and batch processing use cases. | |
| * **Comprehensive Endpoint Coverage**: Support completion, chat, workflows, feedback, file uploads, etc., the client | |
| covers all available Dify API endpoints. | |
| ## Installation | |
| Before using the `dify-client-python` client, you'll need to install it. You can easily install it using `pip`: | |
| ```bash | |
| pip install dify-client-python | |
| ``` | |
| ## Quick Start | |
| Here's a quick example of how you can use the Dify Client to send a chat message. | |
| ```python | |
| import uuid | |
| from dify_client import Client, models | |
| # Initialize the client with your API key | |
| client = Client( | |
| api_key="your-api-key", | |
| api_base="http://localhost/v1", | |
| ) | |
| user = str(uuid.uuid4()) | |
| # Create a blocking chat request | |
| blocking_chat_req = models.ChatRequest( | |
| query="Hi, dify-client-python!", | |
| inputs={"city": "Beijing"}, | |
| user=user, | |
| response_mode=models.ResponseMode.BLOCKING, | |
| ) | |
| # Send the chat message | |
| chat_response = client.chat_messages(blocking_chat_req, timeout=60.) | |
| print(chat_response) | |
| # Create a streaming chat request | |
| streaming_chat_req = models.ChatRequest( | |
| query="Hi, dify-client-python!", | |
| inputs={"city": "Beijing"}, | |
| user=user, | |
| response_mode=models.ResponseMode.STREAMING, | |
| ) | |
| # Send the chat message | |
| for chunk in client.chat_messages(streaming_chat_req, timeout=60.): | |
| print(chunk) | |
| ``` | |
| For asynchronous operations, use the `AsyncClient` in a similar fashion: | |
| ```python | |
| import asyncio | |
| import uuid | |
| from dify_client import AsyncClient, models | |
| # Initialize the async client with your API key | |
| async_client = AsyncClient( | |
| api_key="your-api-key", | |
| api_base="http://localhost/v1", | |
| ) | |
| # Define an asynchronous function to send a blocking chat message with BLOCKING ResponseMode | |
| async def send_chat_message(): | |
| user = str(uuid.uuid4()) | |
| # Create a blocking chat request | |
| blocking_chat_req = models.ChatRequest( | |
| query="Hi, dify-client-python!", | |
| inputs={"city": "Beijing"}, | |
| user=user, | |
| response_mode=models.ResponseMode.BLOCKING, | |
| ) | |
| chat_response = await async_client.achat_messages(blocking_chat_req, timeout=60.) | |
| print(chat_response) | |
| # Define an asynchronous function to send a chat message with STREAMING ResponseMode | |
| async def send_chat_message_stream(): | |
| user = str(uuid.uuid4()) | |
| # Create a blocking chat request | |
| streaming_chat_req = models.ChatRequest( | |
| query="Hi, dify-client-python!", | |
| inputs={"city": "Beijing"}, | |
| user=user, | |
| response_mode=models.ResponseMode.STREAMING, | |
| ) | |
| async for chunk in await async_client.achat_messages(streaming_chat_req, timeout=60.): | |
| print(chunk) | |
| # Run the asynchronous function | |
| asyncio.gather(send_chat_message(), send_chat_message_stream()) | |
| ``` | |
| ## Documentation | |
| For detailed information on all the functionalities and how to use each endpoint, please refer to the official Dify API | |
| documentation. This will provide you with comprehensive guidance on request and response structures, error handling, and | |
| other important details. | |
| ## Contributing | |
| Contributions are welcome! If you would like to contribute to the `dify-client-python`, please feel free to make a pull | |
| request or open an issue to discuss potential changes. | |
| ## License | |
| This project is licensed under the MIT License - see the LICENSE file for details. | |
| ```text | |
| MIT License | |
| Copyright (c) 2024 haoyuhu | |
| Permission is hereby granted, free of charge, to any person obtaining a copy | |
| of this software and associated documentation files (the "Software"), to deal | |
| in the Software without restriction, including without limitation the rights | |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| copies of the Software, and to permit persons to whom the Software is | |
| furnished to do so, subject to the following conditions: | |
| The above copyright notice and this permission notice shall be included in all | |
| copies or substantial portions of the Software. | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| SOFTWARE. | |
| ``` | |
| ## Support | |
| If you encounter any issues or have questions regarding the usage of this client, please reach out to the Dify Client | |
| support team. | |
| Happy coding! π |