Integrating DeepSeek API with Qodly: A Quick Guide

Integrating DeepSeek API with Qodly: A Quick Guide

Qodly Development 04/09/2025

<p><span lang="EN-US">This guide provides a quick start to integrating <strong>DeepSeek API</strong> with<strong> Qodly</strong>. We’ll be using the Qodly’s HTTPRequest class to send user queries to DeepSeek and retrieve AI-generated responses effortlessly.</span></p><p>&nbsp;</p><h2>1. Request your API key:</h2><p><span lang="EN-US">Before getting started, you’ll need to request your API key from DeepSeek’s website to authenticate your requests in your application.</span></p><p><span lang="EN-US"><strong>Base URL:</strong></span></p><p><span lang="EN-US">The API url we’ll be using in this demo :</span><code><span lang="EN-US"> </span></code><a href="https://api.deepseek.com/v1/chat/completions"><code><span lang="EN-US">https://api.deepseek.com/v1/chat/completions</span></code></a></p><p class="text-align-justify"><span lang="EN-US"><sup>The /v1/chat/completions endpoint will allow us to send chat-like queries to DeepSeek's API and receive AI-generated responses, enabling interactive, dynamic conversations within our application.</sup></span></p><p class="text-align-justify">&nbsp;</p><h2 class="text-align-justify">2. Integrate DeepSeek with Qodly:</h2><p class="text-align-justify">We’ll demonstrate how to connect to DeepSeek using Qodly’s HTTPRequest class within a singleton pattern, ensuring efficient API usage.<span lang="EN-US"></span></p><pre><code class="language-4d language-plaintext">shared singleton constructor() this.apiKey = "your_api_key" this.apiUrl="https://api.deepseek.com/v1/chat/completions" exposed function chatbot(prompt : string):string var&nbsp;jsonBody,content : string var&nbsp;data : object&nbsp;= newObject() var&nbsp;request : 4D.HTTPRequest var&nbsp;requestOptions,jsonResponse:object data.model = "deepseek-chat" data.messages = [(newObject("role", "user", "content",prompt))] data.temperature = 0.1 data.max_tokens = 500 jsonBody = jsonStringify(data) requestOptions = {} requestOptions.method = "POST" requestOptions.headers = newObject("Authorization", "Bearer "+this.apiKey, "Content-Type", "application/json") requestOptions.body = jsonBody requestOptions.dataType = "text" request = 4D.HTTPRequest.new(this.apiUrl, requestOptions) request.wait() if&nbsp;((request.response.status == 200) &amp;&amp; (valueType(request.response.body) == kString)) try jsonResponse = jsonParse(request.response.body) content = jsonResponse.choices[0].message.content catch content = "Error : Parsing went wrong." end else content = "Error : HTTP status: "+string(request.response.status) end return content</code></pre><ul><li><span style="font-family:Symbol;" lang="EN-US"></span><span lang="EN-US">API Initialization: The singleton constructor sets up the API key and URL. The singleton pattern ensures that only one instance of the connection is used throughout the application.</span></li><li><p style="line-height:normal;"><span lang="EN-US">Sending Requests: The chatbot function sends a user prompt to DeepSeek’s API via a POST request, with necessary headers (Authorization, Content-Type).</span></p></li></ul><pre><code class="language-4d language-plaintext">data.model = "deepseek-chat" data.messages = [(newObject("role", "user", "content",prompt))] data.temperature = 0.1 data.max_tokens = 500</code></pre><p style="margin-left:.25in;"><span lang="EN-US">Here’s a breakdown of those lines:</span></p><ul><li><p style="line-height:normal;"><span lang="EN-US"><strong>data.model = "deepseek-chat"</strong></span><em><span lang="EN-US">:</span></em><span lang="EN-US"> Specifies the AI model to use for generating responses.</span></p></li><li><p style="line-height:normal;"><span lang="EN-US"><strong>data.messages = [(newObject("role", "user", "content", prompt))]:</strong> Defines the messages for the chat, with the user's input (prompt) being passed in as the message content. The "role" is set to "user" to indicate the sender.</span></p></li><li><p style="line-height:normal;"><span lang="EN-US"><strong>data.temperature = 0.1</strong>: Controls the randomness of the response. The lower the value, the more deterministic and focused the response becomes.</span></p></li><li><p style="line-height:normal;"><span lang="EN-US"><strong>data.max_tokens = 500</strong>: Sets the limit of the response ‘length.</span></p></li></ul><pre><code class="language-4d language-plaintext"> jsonBody = jsonStringify(data) requestOptions = {} requestOptions.method = "POST" requestOptions.headers = newObject("Authorization", "Bearer "+this.apiKey, "Content-Type", "application/json") requestOptions.body = jsonBody requestOptions.dataType = "text" request = 4D.HTTPRequest.new(this.apiUrl, requestOptions) request.wait()</code></pre><p style="line-height:normal;">&nbsp;</p><p style="line-height:normal;"><span lang="EN-US">The code snippet performs one main action:</span></p><ul><li><p style="line-height:normal;"><span lang="EN-US">&nbsp;Setting up and sending the request, where data is stringified, HTTP request options are configured (method, headers, body, and response type), and the request is sent via 4D.HTTPRequest.new(), followed by waiting for the response.&nbsp;</span></p></li><li><p style="line-height:normal;"><span lang="EN-US">It then handles the response by parsing it and extracting the chatbot's reply, with error handling for any HTTP or parsing failures.</span></p></li></ul><p style="line-height:normal;">&nbsp;</p><pre><code class="language-4d language-plaintext"> if&nbsp;((request.response.status == 200) &amp;&amp; (valueType(request.response.body) == kString)) try jsonResponse = jsonParse(request.response.body) content = jsonResponse.choices[0].message.content catch content = "Error : Parsing went wrong." end else content = "Error : HTTP status: "+string(request.response.status) end return content</code></pre><p style="line-height:normal;">&nbsp;</p><ul><li><p style="line-height:normal;"><span lang="EN-US">This approach efficiently manages API connections and allows easy integration with DeepSeek’s AI-driven chat responses.</span></p><p style="line-height:normal;"><span style="font-size:14.0pt;" lang="EN-US"></span></p></li></ul><h2>3. Building the Interface</h2><p><span lang="EN-US">For the interface, you can create a simple layout with:</span><span style="font-size:14.0pt;line-height:115%;" lang="EN-US"></span></p><ul><li><span lang="EN-US">A <strong>Text Input</strong> that captures the user's question, which is then sent to the DeepSeek API.</span></li><li><span lang="EN-US">A <strong>Button</strong> that triggers the function from the singleton class. When clicked, it initiates the API call, sending the user input to the DeepSeek service and retrieving the response.</span></li><li><p><span lang="EN-US">A simple <strong>Text&nbsp;</strong>to show the API response.</span></p><p><span lang="EN-US">This ensures easy interaction with DeepSeek, allowing users to input questions and view results.</span></p></li></ul><img src="/sites/default/files/deepseek-qodly-integration.png" data-entity-uuid="fc25f7df-7906-4455-af8a-be4027900e72" data-entity-type="file" alt="" width="1020" height="415"><h2>4. Demo</h2><img src="/sites/default/files/deepSeekQodly.webp" width="906" height="428"><p>&nbsp;</p><h2>5. Conclusion</h2><p><span lang="EN-US">By integrating DeepSeek’s AI capabilities with Qodly, you can easily enhance your application’s data analysis features. The HTTPRequest class and singleton pattern streamline the process, making it easier to build scalable, data-driven solutions.</span></p>

By Fadwa Bayed, Software Developer

Share this on :

This guide provides a quick start to integrating DeepSeek API with Qodly. We’ll be using the Qodly’s HTTPRequest class to send user queries to DeepSeek and retrieve AI-generated responses effortlessly.

 

1. Request your API key:

Before getting started, you’ll need to request your API key from DeepSeek’s website to authenticate your requests in your application.

Base URL:

The API url we’ll be using in this demo : https://api.deepseek.com/v1/chat/completions

The /v1/chat/completions endpoint will allow us to send chat-like queries to DeepSeek's API and receive AI-generated responses, enabling interactive, dynamic conversations within our application.

 

2. Integrate DeepSeek with Qodly:

We’ll demonstrate how to connect to DeepSeek using Qodly’s HTTPRequest class within a singleton pattern, ensuring efficient API usage.

shared singleton constructor() 
    this.apiKey = "your_api_key"
    this.apiUrl="https://api.deepseek.com/v1/chat/completions"   
exposed function chatbot(prompt : string):string
    var jsonBody,content : string
    var data : object = newObject()
    var request : 4D.HTTPRequest
    var requestOptions,jsonResponse:object
    data.model = "deepseek-chat"
    data.messages = [(newObject("role", "user", "content",prompt))]
    data.temperature = 0.1
    data.max_tokens = 500
    jsonBody = jsonStringify(data)
    requestOptions = {}
    requestOptions.method = "POST"
    requestOptions.headers = newObject("Authorization", "Bearer "+this.apiKey, "Content-Type", "application/json")
    requestOptions.body = jsonBody
    requestOptions.dataType = "text"
    request = 4D.HTTPRequest.new(this.apiUrl, requestOptions)
    request.wait()
    if ((request.response.status == 200) && (valueType(request.response.body) == kString))
        try
            jsonResponse = jsonParse(request.response.body)
            content = jsonResponse.choices[0].message.content
        catch
            content = "Error : Parsing went wrong."
        end
    else 
        content = "Error : HTTP status:  "+string(request.response.status)
    end 
    return content
  • API Initialization: The singleton constructor sets up the API key and URL. The singleton pattern ensures that only one instance of the connection is used throughout the application.
  • Sending Requests: The chatbot function sends a user prompt to DeepSeek’s API via a POST request, with necessary headers (Authorization, Content-Type).

data.model = "deepseek-chat"
    data.messages = [(newObject("role", "user", "content",prompt))]
    data.temperature = 0.1
    data.max_tokens = 500

Here’s a breakdown of those lines:

  • data.model = "deepseek-chat": Specifies the AI model to use for generating responses.

  • data.messages = [(newObject("role", "user", "content", prompt))]: Defines the messages for the chat, with the user's input (prompt) being passed in as the message content. The "role" is set to "user" to indicate the sender.

  • data.temperature = 0.1: Controls the randomness of the response. The lower the value, the more deterministic and focused the response becomes.

  • data.max_tokens = 500: Sets the limit of the response ‘length.

   jsonBody = jsonStringify(data)
    requestOptions = {}
    requestOptions.method = "POST"
    requestOptions.headers = newObject("Authorization", "Bearer "+this.apiKey, "Content-Type", "application/json")
    requestOptions.body = jsonBody
    requestOptions.dataType = "text"
    request = 4D.HTTPRequest.new(this.apiUrl, requestOptions)
    request.wait()

 

The code snippet performs one main action:

  •  Setting up and sending the request, where data is stringified, HTTP request options are configured (method, headers, body, and response type), and the request is sent via 4D.HTTPRequest.new(), followed by waiting for the response. 

  • It then handles the response by parsing it and extracting the chatbot's reply, with error handling for any HTTP or parsing failures.

 

    if ((request.response.status == 200) && (valueType(request.response.body) == kString))
        try
            jsonResponse = jsonParse(request.response.body)
            content = jsonResponse.choices[0].message.content
        catch
            content = "Error : Parsing went wrong."
        end
    else 
        content = "Error : HTTP status:  "+string(request.response.status)
    end 
    return content

 

  • This approach efficiently manages API connections and allows easy integration with DeepSeek’s AI-driven chat responses.

3. Building the Interface

For the interface, you can create a simple layout with:

  • A Text Input that captures the user's question, which is then sent to the DeepSeek API.
  • A Button that triggers the function from the singleton class. When clicked, it initiates the API call, sending the user input to the DeepSeek service and retrieving the response.
  • A simple Text to show the API response.

    This ensures easy interaction with DeepSeek, allowing users to input questions and view results.

4. Demo

 

5. Conclusion

By integrating DeepSeek’s AI capabilities with Qodly, you can easily enhance your application’s data analysis features. The HTTPRequest class and singleton pattern streamline the process, making it easier to build scalable, data-driven solutions.

Hybrid Low-code Platform For Your Business Apps

Have freedom of customization while avoiding the constraints of No-Code limitations. Try Qodly for Free!

Discover Qodly

We've just launched on Product Hunt! Come and show your support and feedback!

Upvote
product hunt image