Class DifyChatService

java.lang.Object
com.bytedesk.ai.springai.providers.dify.DifyChatService

@Service @ConditionalOnProperty(name="bytedesk.dify.enabled", havingValue="true", matchIfMissing=false) public class DifyChatService extends Object
Dify Chat Service - 基于 Dify API 的对话服务 https://docs.dify.ai/zh-hans/guides/application-publishing/developing-with-apis
  • Field Details

    • restTemplate

      private final org.springframework.web.client.RestTemplate restTemplate
    • objectMapper

      private final com.fasterxml.jackson.databind.ObjectMapper objectMapper
    • apiUrl

      @Value("${bytedesk.dify.api-url:https://api.dify.ai}") private String apiUrl
    • apiKey

      @Value("${bytedesk.dify.api-key}") private String apiKey
  • Constructor Details

    • DifyChatService

      public DifyChatService()
  • Method Details

    • sendChatMessage

      public String sendChatMessage(String query, String conversationId, String user, Map<String,Object> inputs, String responseMode)
      发送对话消息 - chat-messages API
      Parameters:
      query - 用户查询
      conversationId - 对话ID,为空时创建新对话
      user - 用户标识
      inputs - 输入变量
      responseMode - 响应模式:streaming 或 blocking
      Returns:
      API响应
    • sendCompletionMessage

      public String sendCompletionMessage(Map<String,Object> inputs, String user, String responseMode)
      发送文本补全消息 - completion-messages API
      Parameters:
      inputs - 输入变量
      user - 用户标识
      responseMode - 响应模式:streaming 或 blocking
      Returns:
      API响应
    • getConversationMessages

      public String getConversationMessages(String conversationId, String user, String firstId, Integer limit)
      获取对话历史
      Parameters:
      conversationId - 对话ID
      user - 用户标识
      firstId - 第一条消息ID(用于分页)
      limit - 限制数量
      Returns:
      API响应
    • getConversations

      public String getConversations(String user, String lastId, Integer limit, Boolean pinned)
      获取对话列表
      Parameters:
      user - 用户标识
      lastId - 最后一个对话ID(用于分页)
      limit - 限制数量
      pinned - 是否只返回置顶对话
      Returns:
      API响应
    • deleteConversation

      public String deleteConversation(String conversationId, String user)
      删除对话
      Parameters:
      conversationId - 对话ID
      user - 用户标识
      Returns:
      API响应
    • renameConversation

      public String renameConversation(String conversationId, String name, String user)
      重命名对话
      Parameters:
      conversationId - 对话ID
      name - 新名称
      user - 用户标识
      Returns:
      API响应
    • extractConversationId

      public String extractConversationId(String response)
      解析响应中的 conversation_id
      Parameters:
      response - API响应
      Returns:
      conversation_id
    • extractMessageContent

      public String extractMessageContent(String response)
      解析响应中的消息内容
      Parameters:
      response - API响应
      Returns:
      消息内容