
類型:人工智能
簡(jiǎn)介:一款基于深度學(xué)習(xí)和自然語(yǔ)言處理技術(shù)的產(chǎn)品,人氣趕超ChatGPT。
DeepSeek的/chat/completions API采用 “無(wú)狀態(tài)”設(shè)計(jì)理念。也就說(shuō)明服務(wù)端不會(huì)主動(dòng)記錄用戶請(qǐng)求的上下文信息。因此用戶在每一次發(fā)起請(qǐng)求時(shí),都需要把之前所有的對(duì)話歷史精心拼接起來(lái),再傳遞給對(duì)話 API,以此確保模型能夠全面理解整個(gè)對(duì)話的來(lái)龍去脈,進(jìn)而給出精準(zhǔn)恰當(dāng)?shù)幕貜?fù)。
一、Python代碼實(shí)現(xiàn)多輪對(duì)話
接下來(lái)將以Python語(yǔ)言為例,向展示如何進(jìn)行上下文拼接,從而輕松實(shí)現(xiàn)多輪對(duì)話。
pythonfrom openai import OpenAI # 初始化 OpenAI 客戶端,填入 DeepSeek API Key 并指定 API 基礎(chǔ) URL client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com") # 第一輪對(duì)話 # 構(gòu)建初始消息列表,包含用戶的第一個(gè)問(wèn)題 messages = [{"role": "user", "content": "What's the highest mountain in the world?"}] # 向 API 發(fā)送請(qǐng)求,獲取模型的回復(fù) response = client.chat.completions.create( model="deepseek - chat", messages=messages ) # 將模型的回復(fù)添加到消息列表中 messages.append(response.choices[0].message) print(f"Messages Round 1: {messages}") # 第二輪對(duì)話 # 用戶提出新的問(wèn)題,將其添加到消息列表末尾 messages.append({"role": "user", "content": "What is the second?"}) # 再次向 API 發(fā)送請(qǐng)求,包含之前的對(duì)話歷史和新問(wèn)題 response = client.chat.completions.create( model="deepseek - chat", messages=messages ) # 將本輪模型的回復(fù)添加到消息列表中 messages.append(response.choices[0].message) print(f"Messages Round 2: {messages}")
二、各輪請(qǐng)求消息解析
下面我們?cè)敿?xì)解析每一輪請(qǐng)求中傳遞給 API 的 messages 內(nèi)容:
1、第一輪請(qǐng)求
在第一輪請(qǐng)求時(shí),傳遞給 API 的 messages 僅包含用戶提出的第一個(gè)問(wèn)題:
[ {"role": "user", "content": "What's the highest mountain in the world?"} ]
2、第二輪請(qǐng)求
在進(jìn)行第二輪請(qǐng)求時(shí),需要按照特定步驟更新 messages 列表:
- 把第一輪中模型給出的輸出添加到 messages 列表的末尾,這樣模型就能知曉之前的回復(fù)內(nèi)容;
- 將用戶新提出的問(wèn)題添加到 messages 列表的末尾,讓模型了解最新的提問(wèn);
- 最終傳遞給 API 的 messages 列表如下:
[ {"role": "user", "content": "What's the highest mountain in the world?"}, {"role": "assistant", "content": "The highest mountain in the world is Mount Everest."}, {"role": "user", "content": "What is the second?"} ]