專欄總目錄
????????按照ollama官方doc的example操作,沒有成功與本地ollama上的deepseek-r1:1.5b通訊后,發現vscode可以調用本地ollama上的deepseek模型。
????????為了實現與ollama上的deepseek模型通訊,我使用wireshark對本地回環地址進行偵聽后,發現了具體方法。
一、研究過程
? ? ? ? vscode上提問,給了如下回答
? ? ? ? 如下圖所示,上傳的內容及參數,關鍵字在相關內容的的位置
二、對話腳本
????????使用python腳本編輯后如下所示
import socket
import json
import jsondef get_content(str_data):#print(str_data)content_str = ''for i in str_data.splitlines():if 'think' in i:continueelif '"content"' in i:# 給定的JSON字符串json_string = i# 解析JSON字符串data = json.loads(json_string)# 提取content的值content = data['message']['content']content_str = content_str + content.replace('/n', '')stripped_string = content_str.lstrip('\n')return stripped_stringdef send_post_request(host, port, path, headers, body):# 創建一個socket對象with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:# 連接到服務器s.connect((host, port))# 構造HTTP請求request = f"POST {path} HTTP/1.1\r\n"for header, value in headers.items():request += f"{header}: {value}\r\n"request += "\r\n" # 空行表示頭部結束request += body# 發送HTTP請求s.sendall(request.encode('utf-8'))# 接收響應response = b''while True:part = s.recv(1024)if not part:breakresponse += partreturn responsedef main():# 服務器的地址和端口host = '127.0.0.1'port = 11434path = "/api/chat"while True:question = input('>>>')# 構造請求數據data = {"model": "deepseek-r1:1.5b","messages": [{"role": "user", "content": question}],"options": {"num_predict": 4096,"stop": ["<...begin...of...sentence...>", "<...end...of...sentence...>", "<...User...>", "<...Assistant...>"],"num_ctx": 8096},"keep_alive": 1800}body = json.dumps(data)# 構造HTTP頭部headers = {"Accept": "*/*","Accept-Encoding": "gzip, deflate, br","Authorization": "Bearer undefined","Content-Length": str(len(body)),"Content-Type": "application/json","User-Agent": "node-fetch","Host": "127.0.0.1:11434","Connection": "close"}# 發送POST請求并獲取響應response = send_post_request(host, port, path, headers, body)print("【deepseek】: ",end='')#print(response.decode('utf-8'))mess = get_content(response.decode('utf-8'))print(mess)if __name__ == '__main__':main()
????????具體切片、美化步驟再此省略。