在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用deepseek-R1寫了一個串口調試工具,500行代碼,功能強大!

朱代鑫 ? 來源:jf_96340853 ? 作者:jf_96340853 ? 2025-02-06 09:39 ? 次閱讀

真的很牛逼啊!!!
我只負責溝通,寫代碼,改UI都是deepseek弄的。

import serial
import serial.tools.list_ports
import tkinter as tk
from tkinter import ttk, messagebox, colorchooser, filedialog
from threading import Thread, Event
import time
import binascii
from datetime import datetime
 
class SerialDebugger:
    def __init__(self, master):
        self.master = master
        self.serial_port = None
        self.receive_flag = Event()
        self.auto_send_flag = False
        self.rx_counter = 0
        self.tx_counter = 0
        self.recv_color = '#FF0000'  # 默認接收顏色紅色
        self.send_color = '#0000FF'  # 默認發送顏色藍色
        self.extension_visible = False  # 擴展窗口可見狀態
         
        # 獲取默認Checkbutton背景顏色
        temp = tk.Checkbutton(master)
        self.default_bg = temp.cget('bg')
        temp.destroy()
         
        # 初始化ttk樣式
        self.style = ttk.Style()
        self.style.configure('Yellow.TCombobox', fieldbackground='yellow')
         
        # 初始化界面
        self.setup_ui()
        self.setup_extension_window()
        self.update_ports()
         
        # 綁定事件
        self.port_combo.bind("", self.on_port_change)
 
    def setup_ui(self):
        """初始化主界面布局"""
        self.master.geometry("990x700")
        self.master.title("串口調試工具 - 智能模擬傳感器答復")
        self.master.minsize(650, 450)
         
        # 配置主窗口網格布局
        self.master.grid_columnconfigure(0, weight=1)
        self.master.grid_columnconfigure(1, weight=0, minsize=0)  # 擴展窗口列
        self.master.grid_rowconfigure(0, weight=1)  # 數據顯示區
        self.master.grid_rowconfigure(1, weight=0)  # 控制區
        self.master.grid_rowconfigure(2, weight=0)  # 狀態欄
 
        # ========== 數據顯示區 ==========
        display_frame = ttk.Frame(self.master)
        display_frame.grid(row=0, column=0, sticky="nsew", padx=5, pady=5)
         
        self.text_display = tk.Text(display_frame, state=tk.DISABLED, wrap=tk.WORD)
        scroll_display = ttk.Scrollbar(display_frame, orient="vertical", command=self.text_display.yview)
        self.text_display.configure(yscrollcommand=scroll_display.set)
         
        self.text_display.grid(row=0, column=0, sticky="nsew")
        scroll_display.grid(row=0, column=1, sticky="ns")
        display_frame.grid_columnconfigure(0, weight=1)
        display_frame.grid_rowconfigure(0, weight=1)
 
        # ========== 中間控制區 ==========
        control_frame = ttk.Frame(self.master)
        control_frame.grid(row=1, column=0, columnspan=2, sticky="nsew", padx=5, pady=2)
        control_frame.grid_columnconfigure(0, minsize=200, weight=0)
        control_frame.grid_columnconfigure(1, weight=1)
        control_frame.grid_columnconfigure(2, minsize=250, weight=0)
        control_frame.grid_rowconfigure(0, minsize=155, weight=0)
 
        # 串口設置區
        self.setup_serial_controls(control_frame)
        # 發送輸入區
        self.setup_send_controls(control_frame)
        # 功能區
        self.setup_function_controls(control_frame)
 
        # ========== 狀態欄 ==========
        self.setup_status_bar()
 
    def setup_extension_window(self):
        """初始化擴展窗口"""
        self.extension_frame = ttk.Frame(self.master, width=425)
        self.extension_frame.grid(row=0, column=1, sticky="nsew")
        self.extension_frame.grid_remove()
         
        # 創建Notebook
        self.notebook = ttk.Notebook(self.extension_frame)
        self.notebook.pack(expand=True, fill='both')
         
        # 預置命令標簽頁
        self.preset_frame = ttk.Frame(self.notebook)
        self.notebook.add(self.preset_frame, text="預置命令")
         
        # 自動答復標簽頁
        self.auto_reply_frame = ttk.Frame(self.notebook)
        self.notebook.add(self.auto_reply_frame, text="自動答復")
         
        # 設置固定寬度
        self.extension_frame.grid_propagate(False)
        self.extension_frame.config(width=425)
 
    def toggle_extension(self):
        """切換擴展窗口顯示狀態"""
        self.extension_visible = not self.extension_visible
        if self.extension_visible:
            self.extension_frame.grid()
            self.master.grid_columnconfigure(1, minsize=425, weight=0)
        else:
            self.extension_frame.grid_remove()
            self.master.grid_columnconfigure(1, weight=0, minsize=0)
 
    def setup_status_bar(self):
        """初始化底部狀態欄"""
        status_bar = ttk.Frame(self.master, height=22)
        status_bar.grid(row=2, column=0, columnspan=2, sticky="sew")
         
        self.status_conn = ttk.Label(status_bar, text="未連接", anchor=tk.W)
        self.status_rx = ttk.Label(status_bar, text="RX:0", width=8)
        self.status_tx = ttk.Label(status_bar, text="TX:0", width=8)
        self.status_author = ttk.Label(status_bar, text="Power by DeepSeek", anchor=tk.E)
         
        self.status_conn.pack(side=tk.LEFT, fill=tk.X, expand=True)
        self.status_rx.pack(side=tk.LEFT, padx=5)
        self.status_tx.pack(side=tk.LEFT, padx=5)
        self.status_author.pack(side=tk.RIGHT)
 
    def setup_serial_controls(self, parent):
        """串口設置區"""
        frame = ttk.LabelFrame(parent, text="串口設置", padding=5)#padding 與頂部的距離
        frame.grid(row=0, column=0, sticky="nsew", padx=2)
        frame.grid_propagate(False)
        frame.config(width=200, height=155)
         
        frame.grid_columnconfigure(1, weight=1)
        row = 0
         
        ttk.Label(frame, text="端口號:").grid(row=row, column=0, sticky=tk.W)
        self.port_combo = ttk.Combobox(frame)
        self.port_combo.grid(row=row, column=1, sticky=tk.EW, padx=6)
        row += 1
 
        ttk.Label(frame, text="波特率:").grid(row=row, column=0, sticky=tk.W)
        self.baud_combo = ttk.Combobox(frame, values=[
            '300', '600', '1200', '2400', '4800', '9600', 
            '14400', '19200', '38400', '57600', '115200'
        ])
        self.baud_combo.set('9600')
        self.baud_combo.grid(row=row, column=1, sticky=tk.EW, padx=6)
        row += 1
 
        # 數據位和校驗行
        param_row = ttk.Frame(frame)
        param_row.grid(row=row, column=0, columnspan=2, sticky=tk.EW)
        ttk.Label(param_row, text="數據位:").grid(row=0, column=0, padx=1)
        self.data_bits = ttk.Combobox(param_row, values=['5', '6', '7', '8'], width=3)
        self.data_bits.set('8')
        self.data_bits.grid(row=0, column=1, padx=4)
        ttk.Label(param_row, text="校驗:").grid(row=0, column=2, padx=1)
        self.parity = ttk.Combobox(param_row, values=['無', '奇校驗', '偶校驗'], width=3)
        self.parity.set('無')
        self.parity.grid(row=0, column=3, sticky=tk.EW)
        param_row.grid_columnconfigure(3, weight=1)
        row += 1
 
        # 停止位和流控行
        param_row = ttk.Frame(frame)
        param_row.grid(row=row, column=0, columnspan=2, sticky=tk.EW)
        ttk.Label(param_row, text="停止位:").grid(row=0, column=0, padx=1)
        self.stop_bits = ttk.Combobox(param_row, values=['1', '1.5', '2'], width=3)
        self.stop_bits.set('1')
        self.stop_bits.grid(row=0, column=1, padx=4)
        ttk.Label(param_row, text="流控:").grid(row=0, column=2, padx=1)
        self.flow_control = ttk.Combobox(param_row, values=['無', 'RTS/CTS', 'XON/XOFF'], width=3)
        self.flow_control.set('無')
        self.flow_control.grid(row=0, column=3, sticky=tk.EW)
        param_row.grid_columnconfigure(3, weight=1)
        row += 1
 
        self.open_btn = ttk.Button(frame, text="打開端口", command=self.toggle_serial)
        self.open_btn.grid(row=row, column=0, columnspan=2, pady=5, sticky=tk.EW)
 
    def setup_send_controls(self, parent):
        """發送輸入區"""
        frame = ttk.LabelFrame(parent, text="發送區", padding=5)
        frame.grid(row=0, column=1, sticky="nsew", padx=2)
        frame.grid_propagate(False)
        frame.config(height=155)
         
        frame.grid_rowconfigure(0, weight=0)
        frame.grid_rowconfigure(1, weight=1)
        frame.grid_columnconfigure(0, weight=1)
 
        top_row = ttk.Frame(frame)
        top_row.grid(row=0, column=0, sticky="ew", pady=2)
        ttk.Button(top_row, text="文件發送", command=self.send_file).pack(side=tk.LEFT, padx=2)
        ttk.Button(top_row, text="數據存至文件", command=self.save_data).pack(side=tk.LEFT, padx=2)
        ttk.Label(top_row, text="末尾添加校驗:").pack(side=tk.LEFT)
        self.checksum_combo = ttk.Combobox(top_row, values=['None', 'CRC-16', 'XOR'], width=8)
        self.checksum_combo.set('None')
        self.checksum_combo.pack(side=tk.LEFT, padx=2)
        self.checksum_combo.bind("", self.on_checksum_selected)
        self.on_checksum_selected(None)
 
        text_frame = ttk.Frame(frame)
        text_frame.grid(row=1, column=0, sticky="nsew")
         
        self.send_text = tk.Text(text_frame, wrap=tk.WORD, font=('Consolas', 10))
        scroll_send = ttk.Scrollbar(text_frame, orient="vertical", command=self.send_text.yview)
        self.send_text.configure(yscrollcommand=scroll_send.set)
         
        self.send_text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        scroll_send.pack(side=tk.RIGHT, fill=tk.Y)
 
    def setup_function_controls(self, parent):
        """功能區"""
        frame = ttk.LabelFrame(parent, text="功能設置", padding=5)
        frame.grid(row=0, column=2, sticky="nsew", padx=2)
        frame.grid_propagate(False)
        frame.config(width=250, height=155)
         
        frame.grid_columnconfigure(0, weight=1)
         
        top_row = ttk.Frame(frame)
        top_row.grid(row=0, column=0, sticky="ew", pady=2)
        self.hex_send = tk.BooleanVar()
        self.hex_send_cb = tk.Checkbutton(top_row, text="Hex發送", variable=self.hex_send)
        self.hex_send_cb.pack(side=tk.LEFT)
        self.hex_send.trace_add('write', lambda *args: self.update_checkbutton_bg(self.hex_send_cb, self.hex_send))
        self.hex_display = tk.BooleanVar()
        self.hex_display_cb = tk.Checkbutton(top_row, text="Hex顯示", variable=self.hex_display)
        self.hex_display_cb.pack(side=tk.LEFT, padx=5)
        self.hex_display.trace_add('write', lambda *args: self.update_checkbutton_bg(self.hex_display_cb, self.hex_display))
        ttk.Button(top_row, text="清空窗口", command=self.clear_display).pack(side=tk.RIGHT)
 
        middle_row = ttk.Frame(frame)
        middle_row.grid(row=1, column=0, sticky="ew", pady=2)
        self.timestamp = tk.BooleanVar()
        self.timestamp_cb = tk.Checkbutton(middle_row, text="時間戳", variable=self.timestamp)
        self.timestamp_cb.pack(side=tk.LEFT)
        self.timestamp.trace_add('write', lambda *args: self.update_checkbutton_bg(self.timestamp_cb, self.timestamp))
        color_frame = ttk.Frame(middle_row)
        color_frame.pack(side=tk.RIGHT)
        ttk.Label(color_frame, text="收:").pack(side=tk.LEFT)
        self.recv_color_lbl = tk.Label(color_frame, width=2, bg=self.recv_color, relief="solid")
        self.recv_color_lbl.bind("", lambda e: self.choose_color('recv'))
        self.recv_color_lbl.pack(side=tk.LEFT, padx=2)
        ttk.Label(color_frame, text="發:").pack(side=tk.LEFT)
        self.send_color_lbl = tk.Label(color_frame, width=2, bg=self.send_color, relief="solid")
        self.send_color_lbl.bind("", lambda e: self.choose_color('send'))
        self.send_color_lbl.pack(side=tk.LEFT, padx=2)
 
        auto_frame = ttk.Frame(frame)
        auto_frame.grid(row=2, column=0, sticky="ew", pady=2)
        ttk.Label(auto_frame, text="間隔(ms):").pack(side=tk.LEFT)
        self.interval_var = ttk.Entry(auto_frame, width=8)
        self.interval_var.insert(0, "1000")
        self.interval_var.pack(side=tk.LEFT, padx=2)
        self.auto_send = tk.BooleanVar()
        self.auto_send_cb = tk.Checkbutton(auto_frame, text="自動發送", variable=self.auto_send, command=self.toggle_auto_send)
        self.auto_send_cb.pack(side=tk.LEFT)
        self.auto_send.trace_add('write', lambda *args: self.update_checkbutton_bg(self.auto_send_cb, self.auto_send))
 
        # 修改發送按鈕并添加擴展按鈕
        button_frame = ttk.Frame(frame)
        button_frame.grid(row=3, column=0, sticky="ew", pady=5)
        ttk.Button(button_frame, text="發送", command=self.send_data).pack(side=tk.LEFT, expand=True)
        ttk.Button(button_frame, text="擴展", command=self.toggle_extension).pack(side=tk.RIGHT)
 
    def choose_color(self, direction):
        """選擇顏色"""
        chinese_dir = "接收" if direction == "recv" else "發送"
        color = colorchooser.askcolor(title=f'選擇{chinese_dir}顏色')[1]
        if color:
            if direction == 'recv':
                self.recv_color = color
                self.recv_color_lbl.config(bg=color)
            else:
                self.send_color = color
                self.send_color_lbl.config(bg=color)
 
    def update_checkbutton_bg(self, checkbutton, var):
        """更新復選框背景顏色"""
        checkbutton.config(bg='yellow' if var.get() else self.default_bg)
 
    def on_checksum_selected(self, event):
        """校驗選項變化事件處理"""
        if self.checksum_combo.get() != 'None':
            self.checksum_combo.config(style='Yellow.TCombobox')
        else:
            self.checksum_combo.config(style='TCombobox')
 
    def send_file(self):
        """發送文件"""
        if not self.serial_port or not self.serial_port.is_open:
            messagebox.showwarning("警告", "請先打開串口")
            return
         
        file_path = filedialog.askopenfilename()
        if not file_path: return
         
        try:
            with open(file_path, 'rb') as f:
                data = f.read()
             
            if self.hex_send.get():
                hex_str = data.hex()
                data = binascii.unhexlify(hex_str)
             
            data = self.add_checksum(data)
            self.serial_port.write(data)
            self.tx_counter += len(data)
            self.display_data(data, 'send')
            self.update_counters()
        except Exception as e:
            messagebox.showerror("發送文件錯誤", str(e))
 
    def save_data(self):
        """保存數據"""
        content = self.text_display.get("1.0", tk.END)
        file_path = filedialog.asksaveasfilename(
            defaultextension=".txt",
            filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")]
        )
        if not file_path: return
         
        try:
            with open(file_path, 'w', encoding='utf-8') as f:
                f.write(content)
            messagebox.showinfo("保存成功", "數據已保存至文件")
        except Exception as e:
            messagebox.showerror("保存錯誤", str(e))
 
    def add_checksum(self, data):
        """添加校驗碼"""
        checksum_type = self.checksum_combo.get()
        if checksum_type == 'None':
            return data
        elif checksum_type == 'CRC-16':
            crc = self.calculate_crc16(data)
            return data + crc
        elif checksum_type == 'XOR':
            xor = self.calculate_xor(data)
            return data + xor.to_bytes(1, 'big')
        return data
 
    def calculate_crc16(self, data):
        """計算CRC16校驗"""
        crc = 0xFFFF
        for byte in data:
            crc ^= byte
            for _ in range(8):
                if crc & 0x0001:
                    crc >>= 1
                    crc ^= 0xA001
                else:
                    crc >>= 1
        return crc.to_bytes(2, 'little')
 
    def calculate_xor(self, data):
        """計算異或校驗"""
        xor = 0
        for byte in data:
            xor ^= byte
        return xor
 
    def update_ports(self):
        """更新端口列表"""
        ports = [port.device for port in serial.tools.list_ports.comports()]
        self.port_combo['values'] = ports
        self.port_combo.set(ports[0] if ports else '')
 
    def update_status(self, status, success=True):
        """更新狀態欄"""
        if success:
            conn_info = f"{self.port_combo.get()} | {self.baud_combo.get()}波特 | {self.data_bits.get()}數據位 | "
            conn_info += f"{self.stop_bits.get()}停止位 | {self.parity.get()} | {self.flow_control.get()}"
            self.status_conn.config(text=conn_info, foreground='green')
        else:
            self.status_conn.config(text=status, foreground='red')
 
    def update_counters(self):
        """更新計數器"""
        self.status_rx.config(text=f"RX:{self.rx_counter}")
        self.status_tx.config(text=f"TX:{self.tx_counter}")
 
    def clear_display(self):
        """清空顯示"""
        self.text_display.config(state=tk.NORMAL)
        self.text_display.delete(1.0, tk.END)
        self.text_display.config(state=tk.DISABLED)
        self.rx_counter = self.tx_counter = 0
        self.update_counters()
 
    def toggle_auto_send(self):
        """切換自動發送"""
        self.auto_send_flag = self.auto_send.get()
        if self.auto_send_flag:
            self.auto_send_loop()
 
    def auto_send_loop(self):
        """自動發送循環"""
        if self.auto_send_flag and self.serial_port.is_open:
            self.send_data()
            self.master.after(max(100, int(self.interval_var.get())), self.auto_send_loop)
 
    def on_port_change(self, event):
        """端口變更處理"""
        if self.serial_port and self.serial_port.is_open:
            self.close_serial()
            self.open_serial()
 
    def toggle_serial(self):
        """切換串口狀態"""
        if self.serial_port and self.serial_port.is_open:
            self.close_serial()
        else:
            self.open_serial()
 
    def open_serial(self):
        """打開串口"""
        try:
            params = {
                'port': self.port_combo.get(),
                'baudrate': int(self.baud_combo.get()),
                'bytesize': int(self.data_bits.get()),
                'stopbits': {'1':1, '1.5':1.5, '2':2}[self.stop_bits.get()],
                'parity': {'無':'N', '奇校驗':'O', '偶校驗':'E'}[self.parity.get()],
                'xonxoff': 1 if self.flow_control.get() == 'XON/XOFF' else 0,
                'rtscts': 1 if self.flow_control.get() == 'RTS/CTS' else 0
            }
            self.serial_port = serial.Serial(**params)
            self.open_btn.config(text="關閉端口")
            self.update_status("", True)
            self.receive_flag.set()
            Thread(target=self.receive_data, daemon=True).start()
        except Exception as e:
            self.update_status(f"連接失敗:{str(e)}", False)
 
    def close_serial(self):
        """關閉串口"""
        self.receive_flag.clear()
        if self.serial_port:
            self.serial_port.close()
        self.open_btn.config(text="打開端口")
        self.status_conn.config(text="未連接", foreground='black')
 
    def receive_data(self):
        """接收數據"""
        while self.receive_flag.is_set():
            try:
                if self.serial_port.in_waiting:
                    data = self.serial_port.read(self.serial_port.in_waiting)
                    self.rx_counter += len(data)
                    self.display_data(data, 'recv')
                    self.update_counters()
                time.sleep(0.01)
            except Exception as e:
                print("接收錯誤:", e)
                break
 
    def send_data(self):
        """發送數據"""
        if not (self.serial_port and self.serial_port.is_open):
            messagebox.showwarning("警告", "請先打開串口")
            return
         
        text = self.send_text.get("1.0", tk.END).strip()
        if not text: return
         
        try:
            if self.hex_send.get():
                hex_str = text.replace(' ', '').replace('n', '')
                data = binascii.unhexlify(hex_str)
            else:
                data = text.encode('utf-8')
             
            data = self.add_checksum(data)
            self.serial_port.write(data)
            self.tx_counter += len(data)
            self.display_data(data, 'send')
            self.update_counters()
        except Exception as e:
            messagebox.showerror("發送錯誤", str(e))
 
    def display_data(self, data, direction):
        """顯示數據"""
        prefix = "收←◆ " if direction == 'recv' else "發→◇ "
        color = self.send_color if direction == 'send' else self.recv_color
         
        if self.hex_display.get():
            display = ' '.join(f'{b:02X}' for b in data)
        else:
            try: display = data.decode('utf-8', 'replace')
            except: display = str(data)
         
        if self.timestamp.get():
            timestamp = datetime.now().strftime("%H:%M:%S.%f")[:-3]
            full_text = f"[{timestamp}] {prefix}{display}"
        else:
            full_text = f"{prefix}{display}"
         
        self.text_display.config(state=tk.NORMAL)
        self.text_display.insert(tk.END, full_text + 'n', (color,))
        self.text_display.tag_config(color, foreground=color)
        self.text_display.see(tk.END)
        self.text_display.config(state=tk.DISABLED)
 
if __name__ == "__main__":
    root = tk.Tk()
    app = SerialDebugger(root)
    root.mainloop()


審核編輯 黃宇>>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4841

    瀏覽量

    69175
  • 串口調試
    +關注

    關注

    2

    文章

    269

    瀏覽量

    24797
  • DeepSeek
    +關注

    關注

    1

    文章

    309

    瀏覽量

    106
收藏 人收藏

    評論

    相關推薦

    了解DeepSeek-V3 和 DeepSeek-R1兩個大模型的不同定位和應用選擇

    DeepSeek-V3 和 DeepSeek-R1 是深度求索公司(DeepSeek)推出的兩不同定位的大模型,其核心差異主要體現在目標場景、能力側重和技術優化方向上。以下是二者的實
    發表于 02-14 02:08

    超星未來驚蟄R1芯片適配DeepSeek-R1模型

    DeepSeek-R1在實際應用中表現出色,特別是在數學、代碼和自然語言推理方面。 值得提的是,DeepSeek-R1
    的頭像 發表于 02-13 14:05 ?108次閱讀

    【實測】全志A733平板搭建端側Deepseek算力平臺

    ? 隨著DeepSeek 的蒸餾技術的橫空出世,端側 SoC 芯片上運行大模型成為可能。那么端側芯片跑大模型的效果如何呢?本文將在全志 A733 芯片平臺上部署 DeepSeek-R1
    發表于 02-13 10:19

    如何確保云服務器上的DeepSeek-R1模型安全?

    確保云服務器上DeepSeek-R1模型的安全性,需要從多個方面入手,以下是些關鍵措施: 1、使用安全防護工具 Amazon Bedrock Guardrails:AWS提供了Bed
    的頭像 發表于 02-12 13:15 ?56次閱讀

    Deepseek R1大模型離線部署教程

    DeepSeek-R1,是幻方量化旗下AI公司深度求索(DeepSeek)研發的推理模型 。DeepSeek-R1采用強化學習進行后訓練,旨在提升推理能力,尤其擅長數學、代碼和自然語言
    的頭像 發表于 02-12 09:37 ?284次閱讀
    <b class='flag-5'>Deepseek</b> <b class='flag-5'>R1</b>大模型離線部署教程

    OPPO Find N5將接入DeepSeek-R1,可直接語音使用

    全球最薄折疊旗艦OPPO Find N5 將正式接入 DeepSeek-R1,并可通過語音喚醒直接使用,首批購買用戶即可率先體驗。Find N5將于本月正式發布。 ? 接入DeepSeek-R1
    發表于 02-08 17:39 ?139次閱讀

    AIBOX 全系產品已適配 DeepSeek-R1

    國產AI大模型DeepSeek以出色的性價比和高效的模型技術,迅速成為全球AI關注的焦點。Firefly開源團隊率先實現AIBOX系列產品對DeepSeek-R1的全面適配。R1模型性能數據
    的頭像 發表于 02-08 17:30 ?186次閱讀
    AIBOX 全系產品已適配 <b class='flag-5'>DeepSeek-R1</b>

    DeepSeek-R1本地部署指南,開啟你的AI探索之旅

    的進步使用。 論文鏈接:https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf
    的頭像 發表于 02-08 10:30 ?3006次閱讀
    <b class='flag-5'>DeepSeek-R1</b>本地部署指南,開啟你的AI探索之旅

    軟通動力天璇MaaS融合DeepSeek-R1,引領企業智能化轉型

    驅動”的范式轉移,為多行業AI應用落地開辟了新路徑。 作為中國數字技術產品和服務創新的領軍企業,軟通動力積極響應這技術變革,率先與DeepSeek-R1進行了產品融合創新。通過將DeepSeek-R1接入軟通動力的天璇MaaS
    的頭像 發表于 02-08 09:57 ?213次閱讀

    deepin UOS AI接入DeepSeek-R1模型

    DeepSeek-R1 模型自發布以來吸引了眾多用戶關注,為了讓 deepin 用戶更好地體驗這前沿技術,UOS AI 現已適配接入 DeepSeek-R1 端側模型!無需忍受服務器崩潰,兩步即可在本地獨享
    的頭像 發表于 02-08 09:52 ?287次閱讀

    芯動力神速適配DeepSeek-R1大模型,AI芯片設計邁入“快車道”!

    DeepSeek研發的系列推理模型,自誕生起就備受矚目。它采用強化學習訓練,推理時包含大量反思和驗證,思維鏈長度可達數萬字。在數學、代碼以及復雜邏輯推理任務上,DeepSeek-R1有著出色的表現,能取得媲美
    的頭像 發表于 02-07 16:55 ?212次閱讀
    芯動力神速適配<b class='flag-5'>DeepSeek-R1</b>大模型,AI芯片設計邁入“快車道”!

    網易有道全面接入DeepSeek-R1大模型

    近日,網易有道宣布了重要決定,即全面接入DeepSeek-R1大模型。這舉措標志著網易有道在AI技術方面邁出了重要步,將為用戶帶來更
    的頭像 發表于 02-07 14:42 ?503次閱讀

    原生鴻蒙版小藝App上架DeepSeek-R1, AI智慧體驗更豐富

    2月5日,HarmonyOS NEXT的小藝 App正式上架DeepSeek-R1 Beta版,幫助消費者在代碼編寫、數學計算、邏輯推理等方面提供智能問詢服務。華為小藝上架的DeepSeek-R1
    的頭像 發表于 02-07 13:24 ?211次閱讀

    DeepSeek-R1實現自動生成Manim動畫

    ? 作者:算力魔方創始人/英特爾創新大使劉力 前面我們分享了在本地運行能與OpenAI-o1 能力相媲美的DeepSeek-R1 模型。本文將介紹如何使用DeepSeek-R1實現自動生成Manim
    的頭像 發表于 02-07 12:31 ?1720次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>DeepSeek-R1</b>實現自動生成Manim動畫

    對標OpenAI o1,DeepSeek-R1發布

    DeepSeek-R1 在后訓練階段大規模使用了強化學習技術,在僅有極少標注數據的情況下,極大提升了模型推理能力。在數學、代碼、自然語言推理等任務上,性能比肩 OpenAI o1 正式版
    的頭像 發表于 01-22 13:46 ?660次閱讀
    對標OpenAI o<b class='flag-5'>1</b>,<b class='flag-5'>DeepSeek-R1</b>發布
    主站蜘蛛池模板: 激情久久久久久久久久久 | 日本加勒比在线视频 | 久在操 | 四虎影院成人在线观看 | 亚洲高清中文字幕一区二区三区 | 黄大片18满岁水多 | 色老久久精品偷偷鲁一区 | 欧美一区视频 | 一卡二卡三卡四卡无卡在线 | 日本不卡视频一区二区三区 | 免费一区二区三区 | 欧美色淫 | 色www免费视频| 天天插在线视频 | 视频在线观看一区 | 成人免费一区二区三区 | 国产真实乱在线更新 | 国产在线视欧美亚综合 | 97天天做天天爱夜夜爽 | 天天射天天干天天操 | 天天射综合 | 乱高h亲女| 国产在线高清精品二区色五郎 | 全免费一级午夜毛片 | 未成人禁止视频高清在线观看 | 五月婷婷精品 | 超级乱淫片67194免费看 | 色多多福利 | 免费在线观看的网站 | 特级黄毛片 | 天天插天天爽 | h视频在线观看视频观看 | 一区二区在线免费观看 | 欧美性猛交xxxx | 久久99精品久久久久久园产越南 | 在线色播 | 天天看片夜夜爽 | 日韩欧美视频一区 | 特黄特色大片免费播放路01 | 日韩美aaa特级毛片 日韩美a一级毛片 | 色播丁香 |