Page 1 of 1
new Class TDeepSeek in next FWH 24.12
Posted: Sun Jan 12, 2025 6:28 am
by Antonio Linares
Next FWH 24.12 includes Class TDeepSeek
DeepSeek is much cheaper than OpenAI and it offers the same AI quality.
You have to register in DeepSeek site and get your API key. Then from a cmd window do:
set DEEPSEEK_API_KEY=sk-...
sample of use:
Code: Select all | Expand
#include "FiveWin.ch"
function Main()
local oChat := TDeepSeek():New()
oChat:Send( "Using MySQL how to list all tables ? write just the simplest SQL sentence, no explanations" )
? oChat:GetValue()
oChat:End()
return nil
Re: new Class TDeepSeek in next FWH 24.12
Posted: Sun Jan 12, 2025 7:55 pm
by Antonio Linares
Code: Select all | Expand
// Based on https://api-docs.deepseek.com
// Remember to register in https://deepseek.com/ and get your API key
#include "FiveWin.ch"
#include "c:\harbour\contrib\hbcurl\hbcurl.ch"
//----------------------------------------------------------------------------//
CLASS TDeepSeek
DATA cKey INIT ""
DATA cModel INIT "deepseek-chat"
DATA cResponse
DATA cUrl
DATA hCurl
DATA nError INIT 0
DATA nHttpCode INIT 0
METHOD New( cKey, cModel )
METHOD Send( cPrompt )
METHOD End()
METHOD GetValue( cHKey )
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( cKey, cModel ) CLASS TDeepSeek
if Empty( cKey )
::cKey = GetEnv( "DEEPSEEK_API_KEY" )
else
::cKey = cKey
endif
if ! Empty( cModel )
::cModel = cModel
endif
::cUrl = "https://api.deepseek.com/chat/completions"
::hCurl = curl_easy_init()
return Self
//----------------------------------------------------------------------------//
METHOD End() CLASS TDeepSeek
curl_easy_cleanup( ::hCurl )
::hCurl = nil
return nil
//----------------------------------------------------------------------------//
METHOD GetValue( cHKey ) CLASS TDeepSeek
local aKeys := hb_AParams(), cKey
local uValue := hb_jsonDecode( ::cResponse )
hb_default( @cHKey, "content" )
if cHKey == "content"
TRY
uValue = uValue[ "choices" ][ 1 ][ "message" ][ "content" ]
CATCH
uValue = uValue[ "error" ][ "message" ]
END
endif
TRY
for each cKey in aKeys
if ValType( uValue[ cKey ] ) == "A"
uValue = uValue[ cKey ][ 1 ][ "choices" ][ 1 ][ "message" ][ "content" ]
else
uValue = uValue[ cKey ]
endif
next
CATCH
XBrowser( uValue )
END
return uValue
//----------------------------------------------------------------------------//
METHOD Send( cPrompt ) CLASS TDeepSeek
local aHeaders, cJson, hRequest := { => }, hMessage1 := { => }, hMessage2 := { => }
curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )
aHeaders := { "Content-Type: application/json", ;
"Authorization: Bearer " + ::cKey }
curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, '' )
curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
hRequest[ "model" ] = ::cModel
hMessage1[ "role" ] = "system"
hMessage1[ "content" ] = "You are a helpfull assistant."
hMessage2[ "role" ] = "user"
hMessage2[ "content" ] = cPrompt
hRequest[ "messages" ] = { hMessage1, hMessage2 }
hRequest[ "stream" ] = .F.
cJson = hb_jsonEncode( hRequest )
curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )
::nError = curl_easy_perform( ::hCurl )
curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )
if ::nError == HB_CURLE_OK
::cResponse = curl_easy_dl_buff_get( ::hCurl )
else
::cResponse := "Error code " + Str( ::nError )
endif
return ::cResponse
//----------------------------------------------------------------------------//
Re: new Class TDeepSeek in next FWH 24.12
Posted: Thu Jan 16, 2025 5:16 pm
by Ari
Antonio,
Gracias por compartir TDeepSeek.
Me gustaría obtener una Light para comunicarme con la API REST con certificado y CURL. según el código a continuación. ¿Tienes alguna experiencia sobre cómo hacerlo?
Code: Select all | Expand
#include "fivewin.ch"
#include "hbcurl.ch"
* ========================================================================
Function Teste()
* ========================================================================
local cURL := "https://cfqasvir.it-cpi019-rt.cfapps.us10-002.hana.ondemand.com/http/PurchaseOrder/v1?CodeERP=4510160192"
local cCurl
local nError
local cResponse
cCurl := curl_easy_init()
curl_easy_setopt( cCurl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_HTTPS)
curl_easy_setopt( cCurl, HB_CURLOPT_URL , cURL )
curl_easy_setopt( cCurl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_setopt( cCurl, HB_CURLOPT_HTTPHEADER , {"Content-Type: application/json"})
curl_easy_setopt( cCurl, HB_CURLOPT_CUSTOMREQUEST ,'GET' )
curl_easy_setopt( cCurl, HB_CURLOPT_SSLCERTPASSWD , "Key_fornec_Int_69133353" )
curl_easy_setopt( cCurl, HB_CURLOPT_SSLCERT , "C:\sis\fsql901\Key_fornec_Int_69133353.pem" )
curl_easy_setopt( cCurl, HB_CURLOPT_SSLKEY , "C:\sis\fsql901\Key_fornec_Int_69133353.key" )
nError := curl_easy_perform( cCurl )
if nError == HB_CURLE_OK
cResponse := curl_easy_dl_buff_get( cCurl )
else
cResponse := "Error code: " + curl_easy_strerror(nError)
endif
Msg( cResponse )
curl_easy_cleanup(cCurl)
return nil
resposta : Status 401 não autorized
Re: new Class TDeepSeek in next FWH 24.12
Posted: Thu Jan 16, 2025 6:13 pm
by Antonio Linares
Has probado a preguntarle a chatgpt ?
En _ preguntar a varias IAs: chatgpt, claude, copilot, deepseek, es la mejor opción
Re: new Class TDeepSeek in next FWH 24.12
Posted: Thu Jan 16, 2025 6:39 pm
by Ari
Agradecido,
¿Preguntaré?
Re: new Class TDeepSeek in next FWH 24.12
Posted: Tue Jan 21, 2025 8:19 pm
by Antonio Linares
Yesterday 2025-01-20 DeekSeek published a new model much more powerfull:
DeepSeek R1
To use it from FWH Class TDeepSeek we have to specify model="deepseek-reasoner"
By default we are using
DATA cModel INIT
"deepseek-chat"
so in order to use it we have to change this:
DATA cModel INIT
"deepseek-reasoner"
Prices: (the cheapest of all and the best AI)
$0.14 / million input tokens (cache hit)
$0.55 / million input tokens (cache miss)
$2.19 / million output tokens
Re: new Class TDeepSeek in next FWH 24.12
Posted: Wed Jan 22, 2025 5:40 pm
by Antonio Linares
Re: new Class TDeepSeek in next FWH 24.12
Posted: Mon Jan 27, 2025 1:22 pm
by Jimmy
hi,
NOT FOUND 404
use this instead
https://www.deepseek.com/
Re: new Class TDeepSeek in next FWH 24.12
Posted: Mon Jan 27, 2025 3:35 pm
by Antonio Linares
The URL I provided works fine here
Re: new Class TDeepSeek in next FWH 24.12
Posted: Mon Jan 27, 2025 10:11 pm
by Jimmy
hi,
Antonio Linares wrote: Mon Jan 27, 2025 3:35 pm
The URL I provided works fine here
i have read that DeepSeek Website was hacked so that might be the Reason why i can´t connect to the Website.
Re: new Class TDeepSeek in next FWH 24.12
Posted: Tue Jan 28, 2025 3:04 am
by TomH
I just tested DeepSeek's operations, and it is currently functioning normally.
Additionally, I asked it about the cause of this incident (after enabling web search), and here is the response it provided:
-----------------
Yes, according to reports from multiple media outlets, DeepSeek has recently suffered a large-scale cyber attack. Below is a summary of the relevant information:
1.Overview of the Attack
DeepSeek announced on its official service status page that its online services were subjected to a massive malicious attack, which temporarily restricted registration functionality. However, registered users can still log in normally. To mitigate the attack, DeepSeek has temporarily restricted registration methods for non-Chinese mainland phone numbers (+86).
2.Background of the Attack
The attack occurred after DeepSeek released its new AI models, Janus-Pro and JanusFlow, which demonstrated exceptional performance in multimodal understanding and generation tasks, even surpassing OpenAI's DALL-E 3 and Stable Diffusion in certain benchmark tests. The low cost and high performance of DeepSeek's models have caused significant turbulence in global tech stocks, particularly leading to a sharp decline in the stock prices of U.S. tech giants. This may be one of the motivations behind the attack.
3.Impact of the Attack
The attack caused anomalies in DeepSeek's website and API, with some users reporting issues with logging in or registering. Despite this, DeepSeek stated that it has taken measures to ensure normal usage for existing users and expressed gratitude for their understanding and support.
4.History of Security Vulnerabilities
It is worth noting that DeepSeek has previously been found to have security vulnerabilities. For example, in December 2024, researchers discovered a prompt injection vulnerability in DeepSeek's chatbot, which could potentially lead to user account takeovers. However, this vulnerability has since been patched.
In summary, DeepSeek has indeed been targeted by a large-scale cyber attack recently, but the company has taken steps to address the issue and ensure the normal operation of core services. The attack may be related to DeepSeek's rapid rise in the AI field and its impact on the global tech market.
-----------------