
中文命名實體識別(Named Entity Recognition, NER)初探
api_key = "your_api_key_here" # 替換為您的API Key
os.environ["DEEPSEEK_API_KEY"] = api_key
此外,您也可以在系統環境中設置環境變量,例如在Linux或Mac系統中,可以在終端中運行以下命令:
bash復制
export DEEPSEEK_API_KEY="your_api_key_here"
這樣,您就可以在代碼中通過os.environ["DEEPSEEK_API_KEY"]
來獲取API Key。
獲取API Key后,就可以通過編程接口調用DeepSeek的API了。DeepSeek的API與OpenAI完全兼容,因此您可以使用OpenAI的SDK來訪問DeepSeek API。以下是一個使用Python調用DeepSeek API的示例代碼:
Python復制
from openai import OpenAI
# 初始化OpenAI客戶端
client = OpenAI(api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com")
# 創建對話消息
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
# 調用API
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
stream=False
)
# 輸出AI回復
print("AI回復:", response.choices[0].message.content)
在上述代碼中,model
參數指定為deepseek-chat
,表示使用DeepSeek-V3模型。messages
參數是一個列表,包含系統消息和用戶消息。系統消息用于定義AI的角色和行為,用戶消息則是用戶輸入的內容。調用API后,DeepSeek會返回一個響應,其中response.choices[0].message.content
包含了AI的回復內容。
DeepSeek的/chat/completions
API是一個“無狀態”API,即服務端不會記錄用戶請求的上下文。因此,要實現多輪對話,需要在每次請求時將之前所有對話歷史拼接好后傳遞給API。以下是一個實現多輪對話的Python代碼示例:
Python復制
from openai import OpenAI
# 初始化OpenAI客戶端
client = OpenAI(api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com")
# 初始化對話消息列表
messages = [
{"role": "system", "content": "You are a helpful assistant."}
]
while True:
# 獲取用戶輸入
user_input = input("請輸入對話:\n")
messages.append({"role": "user", "content": user_input})
# 調用API
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
stream=True
)
# 輸出AI回復
print("AI回復:")
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print()
在上述代碼中,使用了while
循環來實現多輪對話。每次用戶輸入后,將用戶的消息添加到messages
列表中,然后調用API。通過設置stream=True
參數,可以逐行獲取AI的回復內容,并實時顯示給用戶。
除了在本地應用中調用DeepSeek API,您還可以將DeepSeek的AI能力接入微信平臺,例如個人微信或微信公眾平臺。以下是接入個人微信的步驟:
docker-compose.yml
文件:創建一個文件夾,并在其中新建一個docker-compose.yml
文件。將以下內容復制到文件中:yaml復制
version: '2.0'
services:
chatgpt-on-wechat:
image: registry.cn-guangzhou.aliyuncs.com/kangarooking/chatgpt-on-wechat:250131
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
OPEN_AI_API_KEY: 'your_api_key_here' # 替換為您的DeepSeek API Key
OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'
MODEL: 'deepseek-chat'
SINGLE_CHAT_PREFIX: '[""]'
SINGLE_CHAT_REPLY_PREFIX: '" "'
GROUP_CHAT_PREFIX: '["@your_wechat_name"]' # 替換為您的微信名
GROUP_NAME_WHITE_LIST: '["測試1群", "測試2群"]'
IMAGE_CREATE_PREFIX: '["畫", "看", "找"]'
CONVERSATION_MAX_TOKENS: 3000
SPEECH_RECOGNITION: 'False'
CHARACTER_DESC: '用貓娘的語氣跟我說話'
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
HOT_RELOAD: 'True'
docker-compose.yml
文件所在目錄的地址欄輸入cmd
,進入控制臺。輸入命令docker-compose up -d
,然后回車。等待部署完成后,用微信小號掃碼登錄即可。要將DeepSeek接入微信公眾平臺,需要通過微信公眾平臺的開發接口實現消息交互。以下是接入微信公眾平臺的步驟:
Python復制
from flask import Flask, request, jsonify
import hashlib
import requests
import time
app = Flask(__name__)
TOKEN = "your_token_here" # 替換為您的微信Token
DEEPSEEK_API_KEY = "your_api_key_here" # 替換為您的DeepSeek API Key
# 微信驗證接口
@app.route('/wechat', methods=['GET'])
def verify():
signature = request.args.get('signature', '')
timestamp = request.args.get('timestamp', '')
nonce = request.args.get('nonce', '')
echostr = request.args.get('echostr', '')
# 驗證簽名
tmp_list = sorted([timestamp, nonce, TOKEN])
tmp_str = ''.join(tmp_list).encode('utf-8')
hash_str = hashlib.sha1(tmp_str).hexdigest()
if hash_str == signature:
return echostr
else:
return 'Verification Failed'
# 處理用戶消息
@app.route('/wechat', methods=['POST'])
def handle_message():
# 解析XML數據(需實現XML解析邏輯)
user_msg = extract_user_msg(request.data) # 自定義解析函數
user_input = user_msg.get('Content', '')
# 調用DeepSeek API
headers = {"Authorization": f"Bearer {DEEPSEEK_API_KEY}"}
response = requests.post(
"https://api.deepseek.com/v1/chat/completions",
headers=headers,
json={"messages": [{"role": "user", "content": user_input}]}
)
ai_response = response.json()['choices'][0]['message']['content']
# 返回微信XML格式響應
return f"""
<xml>
<ToUserName><![CDATA[{user_msg['FromUserName']}]]></ToUserName>
<FromUserName><![CDATA[{user_msg['ToUserName']}]]></FromUserName>
<CreateTime>{int(time.time())}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{ai_response}]]></Content>
</xml>
"""
if __name__ == '__main__':
app.run(port=80, host='0.0.0.0')
DeepSeek-V3提供與OpenAI相同的API格式,但具有更低的成本和更高的性能。此外,DeepSeek還支持自定義模型和擴展能力,適合團隊項目。
在調用DeepSeek API時,將stream
參數設置為true
即可啟用流式輸出。例如:
Python復制
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
stream=True
)
DeepSeek支持多用戶管理和API Key權限分配。您可以為不同的用戶分配不同權限的API Key,以確保項目的安全性。
通過本文的介紹,您應該已經掌握了如何獲取DeepSeek API Key,并將其應用于Python程序和微信平臺中。DeepSeek的強大功能和與OpenAI兼容的API接口,使其成為開發者在自然語言處理和智能對話領域的一個優秀選擇。希望本文能夠幫助您快速上手DeepSeek,開啟智能對話之旅。
更多相關文章: