以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [建议] 接入deepseek的API示例 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194927) |
-- 作者:zcgmxf -- 发布时间:2025/2/7 9:03:00 -- [建议] 接入deepseek的API示例 老师,是否可以做一个foxtable接入deepseek的示例。 |
-- 作者:有点蓝 -- 发布时间:2025/2/7 9:14:00 -- http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=194892&page=2 试试 Dim hc As New HttpClient("https://api.deepseek.com/v1/chat/completions") hc.ContentType = "application/json" dim API_KEY As String = "your_api_key_here" hc.Headers.Add("Authorization", "Bearer " & API_KEY) Dim jo As New JObject jo("model") = "deepseek-chat" jo("messages") = new JArray jo("messages").Add(New Jobject) jo("messages")(0)("role") = "user" jo("messages")(0)("content") = "某某prompt" hc.Content = jo.tostring
Dim ret As String = hc.GetData() MessageBox.Show(ret) |
-- 作者:百灵 -- 发布时间:2025/2/7 11:48:00 -- 用deepseek给出的vue代码对接成功,就是有点卡 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" c> <meta http-equiv="X-UA-Compatible" c> <title></title> <script src="libs/vue3.js"></script> <script src="libs/axios.min.js"></script> </head> <body> <div id="app" v-cloak=""> <div> <h1>DeepSeek 流式输出示例</h1> <textarea v-model="prompt" placeholder="请输入提示内容"></textarea> <button @click="generateText">生成文本</button> <div> <h2>生成的文本:</h2> <pre>{{ generatedText }}</pre> </div> </div> </div> <script type="module"> var data = { prompt: \'\', // 用户输入的提示内容 generatedText: \'\', // 生成的文本 }; var methods = { async generateText() { // 清空之前的生成结果 this.generatedText = \'\'; // DeepSeek API 的 URL 和 API 密钥 const API_URL = \'https://api.deepseek.com/v1/chat/completions\'; const API_KEY = \'your key\'; try { // 使用 Fetch API 发送请求 const response = await fetch(API_URL, { method: \'POST\', headers: { \'Content-Type\': \'application/json\', Authorization: `Bearer ${API_KEY}`, }, body: JSON.stringify({ model: \'deepseek-chat\', messages: [{ role: \'user\', content: this.prompt }], stream: true, // 开启流式输出 }), }); // 检查响应是否成功 if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } // 获取流式响应的读取器 const reader = response.body.getReader(); const decoder = new TextDecoder(\'utf-8\'); // 读取流式数据 while (true) { const { done, value } = await reader.read(); if (done) break; // 解码流式数据 const chunk = decoder.decode(value, { stream: true }); const lines = chunk.split(\'\\n\').filter((line) => line.trim() !== \'\'); // 处理每一行数据 lines.forEach((line) => { try { if(line!==\': keep-alive\' && line.includes(\'data:\')){ const json = JSON.parse(line.replace(\'data: \', \'\')); const content = json.choices[0].delta.content; if (content) { // 将生成的文本片段追加到结果中 this.generatedText += content; } } } catch (error) { console.error(\'Error parsing JSON:\', error); } }); } } catch (error) { console.error(\'Error calling DeepSeek API:\', error); } } } var app = Vue.createApp({ data: function() { return data; }, methods:methods, }); app.mount("#app"); </script> <style> [v-cloak] { display: none; } </style> </body> </html>
[此贴子已经被作者于2025/2/7 12:18:52编辑过]
|
-- 作者:aix -- 发布时间:2025/2/7 12:58:00 -- \'http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=191179
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 \'选择一个协议Tls11,不行就Tls12、Tls13都试一遍 Dim hc As New HttpClient("https://api.deepseek.com/v1/chat/completions") hc.ContentType = "application/json" Dim API_KEY As String = "your_api_key_here" hc.Headers.Add("Authorization", "Bearer " & API_KEY) Dim jo As New JObject Dim ja As New JArray jo("model") = "deepseek-chat" jo("messages") = ja ja.Add(New JObject) ja(0)("role") = "user" ja(0)("content") = "某某prompt" hc.Content = jo.ToString Dim ret As String = hc.GetData() MessageBox.Show(ret) [此贴子已经被作者于2025/2/7 13:58:35编辑过]
|
-- 作者:cnhh -- 发布时间:2025/2/10 23:50:00 -- 这个可用,谢谢! |
-- 作者:listfor -- 发布时间:2025/2/11 8:21:00 -- 作一个实例出来 |
-- 作者:洮沙 -- 发布时间:2025/2/12 9:48:00 -- 用阿里云百炼DeepSeek-V3 api 接口测试成功(请有水平狐友接龙将foxtable格式及HTML格式回传后数据解析整理方便阅读,这方面本人技不如人): Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 \'选择一个协议Tls11,不行就Tls12、Tls13都试一遍 Dim hc As New HttpClient("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions") hc.ContentType = "application/json" Dim API_KEY As String = "sk-88888888888888888888888888" hc.Headers.Add("Authorization", "Bearer " & API_KEY) Dim jo As New JObject Dim ja As New JArray jo("model") = "deepseek-r1" jo("messages") = ja ja.Add(New JObject) ja(0)("role") = "user" ja(0)("content") = "9.9和9.11谁大" hc.Content = jo.ToString Dim ret As String = hc.GetData() MessageBox.Show(ret) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>DeepSeek Chat</title> <link href="./layui/css/layui.css" rel="stylesheet"> <style> body { background-color: #f5f5f5; } .container { margin: 20px auto; max-width: 1200px; } .chat-box { background: #fff; border-radius: 10px; box-shadow: 0 2px 12px rgba(0,0,0,.1); } .chat-history { height: 70vh; overflow-y: auto; padding: 20px; } .message { margin-bottom: 20px; } .user-message { text-align: right; } .bot-message { text-align: left; } .message-content { display: inline-block; max-width: 80%; padding: 12px 20px; border-radius: 20px; word-break: break-word; } .user-message .message-content { background: #1890ff; color: #fff; } .bot-message .message-content { background: #f0f2f5; } .input-box { border-top: 1px solid #eee; padding: 20px; position: relative; } .layui-textarea { border: none; resize: none; } .send-btn { position: absolute; right: 30px; bottom: 30px; } </style> </head> <body> <div class="container layui-row"> <!-- 左侧导航 --> <div class="layui-col-md3"> <div class="layui-card"> <div class="layui-card-header">历史会话</div> <div class="layui-card-body" id="history-list"></div> </div> </div> <!-- 右侧聊天区 --> <div class="layui-col-md9"> <div class="chat-box"> <div class="chat-history" id="chat-container"></div> <div class="input-box"> <form class="layui-form" > <div class="layui-form-item"> <textarea id="input-area" class="layui-textarea" rows="3" placeholder="输入你的问题..."></textarea> <button class="layui-btn send-btn" >发送</button> </div> </form> </div> </div> </div> </div> <script type="text/javascript" src="./layui/layui.js"></script> <script> let isGenerating = false; let controller = null; // 初始化 layui.use([\'form\', \'util\'], function(){ const form = layui.form; const util = layui.util; // 绑定Enter键 util.event(\'keydown\', \'#input-area\', function(e){ if(e.key === \'Enter\' && !e.shiftKey) { e.preventDefault(); sendMessage(); } }); }); async function sendMessage() { if (isGenerating) return; const input = document.getElementById(\'input-area\'); const question = input.value.trim(); if (!question) return; isGenerating = true; input.value = \'\'; controller = new AbortController(); // 添加用户消息 appendMessage(question, \'user\'); const API_URL = \'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\'; const API_KEY = \'sk-888888888888888888888888888\'; try { const response = await fetch(API_URL, { method: \'POST\', headers: { \'Content-Type\': \'application/json\', \'Authorization\': `Bearer ${API_KEY}` }, body: JSON.stringify({ model: "deepseek-r1", messages: [{ role: "user", content: question }], stream: true }), signal: controller.signal }); const reader = response.body.getReader(); const decoder = new TextDecoder(); let buffer = \'\'; let partialLine = \'\'; while (true) { const { done, value } = await reader.read(); if (done) break; buffer += decoder.decode(value, { stream: true }); let lines = buffer.split(\'\\n\'); // 保留最后不完整的行 buffer = lines.pop() || \'\'; for (const line of lines) { try { // 处理可能存在的data:前缀 const cleanLine = line.replace(/^data: /, \'\').trim(); if (!cleanLine) continue; if (cleanLine === \'[DONE]\') break; const data = JSON.parse(cleanLine); const content = data.choices[0]?.delta?.content || \'\'; if (content) { appendMessage(content, \'bot\', true); } } catch (e) { console.error(\'解析错误:\', e, \'原始数据:\', line); } } } } catch (error) { if (error.name !== \'AbortError\') { appendMessage(\'请求出错,请重试\', \'bot\'); } } finally { isGenerating = false; controller = null; } } function appendMessage(content, role, isAppend = false) { const container = document.getElementById(\'chat-container\'); let messageElement; if (isAppend && container.lastElementChild?.classList.contains(\'bot-message\')) { messageElement = container.lastElementChild.querySelector(\'.message-content\'); messageElement.innerHTML += content; } else { const messageDiv = document.createElement(\'div\'); messageDiv.className = `message ${role}-message`; messageDiv.innerHTML = ` <div class="message-content"> ${content.replace(/\\n/g, \'<br>\')} </div> `; container.appendChild(messageDiv); messageElement = messageDiv.querySelector(\'.message-content\'); } // 自动滚动 container.scrollTop = container.scrollHeight; } // 停止生成 function stopGenerate() { if (controller) { controller.abort(); isGenerating = false; } } </script> </body> </html> [此贴子已经被作者于2025/2/15 14:30:20编辑过]
|
-- 作者:bobolan521 -- 发布时间:2025/2/12 10:04:00 -- 楼上的兄弟,你把代码复制出来给我们大家试试啊 |
-- 作者:百灵 -- 发布时间:2025/2/12 11:38:00 -- foxtable接入deepseek代码可用,但是不能流式显示,要全部生成后才能显示,会有一段时间卡死,不适用。最好的方法还是用网页对接比较好,可流式显示无卡顿 |
-- 作者:abcdzabcdz -- 发布时间:2025/2/12 18:58:00 -- 这个功能可接入foxtable,方便用户使用了。 |