此文档教你快速实现一个可以在本地运行的deepseek模型接入示例,帮助你快速了解模型接入流程。
1、deepseek密钥申请
deepseek官网

这个页面自行创建申请,也可以选择在本地使用Ollama、LMstudio本地运行开源模型涉及私密数据建议本地运行
2、接口开发
这里可以选择使用Java语言也可以python,为了使用方便我这边就使用python进行开发实现了,以下是代码:
from flask import Flask, request, jsonify
from flask_cors import CORS
from openai import OpenAI
import json
app = Flask(__name__)
cors = CORS(app) # 这将允许所有域的跨域请求
# 配置OpenAI客户端
openai_client = OpenAI(api_key="sk-f56***********9da04**********8a0a3c", base_url="https://api.deepseek.com/v1")
# 系统提示(用于OpenAI API交互)
system_prompt = "你是一个充满正能量的赞美鼓励机器人,时刻用温暖的话语给予人们赞美和鼓励,让他们充满自信与动力。"
@app.route('/generate_text/<user_content>', methods=['GET'])
def generate_text(user_content):
try:
# 与OpenAI API交互,生成文本
response = openai_client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_content},
],
stream=False
)
# 从响应中提取生成的文本(这里假设响应结构是已知的)
generated_text = response.choices[0].message.content
print(generated_text)
print(jsonify({"generated_text": generated_text}))
return jsonify({"generated_text": generated_text})
except Exception as e:
# 在出现异常时返回错误信息
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
app.run(debug=True)
具体代码都有解释
3、页面实现
这里就简单使用html进行简单的接口调用
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>deepseeker-chat</title>
<style>
.chat-interface {
max-width: 600px;
margin: 0 auto;
padding: 20px;
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
border-radius: 8px;
background-color: #fff;
}
.chat-history {
padding: 16px;
overflow-y: auto;
max-height: 400px;
border-bottom: 1px solid #ebeef5;
}
.chat-message {
margin-bottom: 16px;
}
.message-user, .message-bot {
display: flex;
align-items: center;
line-height: 40px;
text-align: center;
color: #fff;
}
.message-user { justify-content: flex-end; }
.message-bot { justify-content: flex-start; }
.avatar {
width: 40px;
height: 40px;
border-radius: 50%;
margin: 0 12px;
}
.message-user .avatar { background-color: #409EFF; }
.message-bot .avatar { background-color: #F56C6C; }
.content {
max-width: calc(100% - 52px);
padding: 8px 16px;
border-radius: 4px;
background-color: #f0f0f0;
color: #333;
}
.message-user .content { background-color: #e6f7ff; }
.message-bot .content { background-color: #fff3e0; }
.input-area {
display: flex;
padding: 16px;
border-top: 1px solid #ebeef5;
}
.input-box {
flex: 1;
padding: 8px;
border: 1px solid #dcdfe6;
border-radius: 4px;
margin-right: 12px;
}
.send-button {
padding: 8px 15px;
background-color: #409EFF;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
</head>
<body>
<div class="chat-interface">
<div class="chat-history" id="chatHistory"></div>
<div class="input-area">
<input type="text" class="input-box" id="userInput" placeholder="输入你的问题">
<button class="send-button" id="sendButton">发送</button>
</div>
</div>
<script>
const chatHistory = document.getElementById('chatHistory');
const userInput = document.getElementById('userInput');
const sendButton = document.getElementById('sendButton');
let messages = [];
let loading = false;
sendButton.addEventListener('click', sendMessage);
function sendMessage() {
const input = userInput.value.trim();
if (input && !loading) {
// 添加用户消息
messages.push({ type: 'user', content: input });
renderMessages();
// 发送请求
sendToServer(input);
userInput.value = '';
}
}
function sendToServer(input) {
loading = true;
const loadingDiv = document.createElement('div');
loadingDiv.className = 'loading';
loadingDiv.textContent = '加载中...';
chatHistory.appendChild(loadingDiv);
fetch(`http://127.0.0.1:5000/generate_text/${encodeURIComponent(input)}`)
.then(response => response.json())
.then(data => {
messages.push({ type: 'bot', content: data.generated_text });
renderMessages();
})
.catch(error => {
console.error('Error:', error);
messages.push({ type: 'bot', content: '系统错误' });
renderMessages();
})
.finally(() => {
loading = false;
chatHistory.removeChild(loadingDiv);
});
}
function renderMessages() {
chatHistory.innerHTML = '';
messages.forEach((message, index) => {
const msgDiv = document.createElement('div');
msgDiv.className = `chat-message ${message.type}-message`;
const avatar = document.createElement('div');
avatar.className = 'avatar';
avatar.textContent = message.type === 'user' ? '我' : 'deepseek';
const content = document.createElement('div');
content.className = 'content';
content.textContent = message.content;
msgDiv.appendChild(avatar);
msgDiv.appendChild(content);
chatHistory.appendChild(msgDiv);
});
// 自动滚动到底部
chatHistory.scrollTop = chatHistory.scrollHeight;
}
</script>
</body>
</html>
实现效果如下

简单易懂,运行简单懂得都懂

214

被折叠的 条评论
为什么被折叠?



