自己之前写了一个简易的deepseek,可以实现对话功能(UI有些丑哈哈哈),主要原理就说调用了deepseek的接口,按照官网格式走一遍就好了。
基础对话
主要也就是下面这块代码逻辑,目前只有简单的对话,不支持历史聊天记录功能。
const handleSend = async () => {
if (!input.trim()) return;
// 添加用户消息
const userMessage = { text: input, isUser: true };
setMessages(prev => [...prev, userMessage]);
setInput('');
setIsLoading(true);
try {
// 调用 DeepSeek API
const response = await callDeepSeekAPI(input);
// 添加 AI 回复
const aiMessage = { text: response, isUser: false };
setMessages(prev => [...prev, aiMessage]);
} catch (error) {
console.error('Error calling DeepSeek API:', error);
// 检查是否是余额不足错误
const errorData = error.response?.data;
let errorMessage;
if (errorData?.message === "Insufficient Balance") {
errorMessage = {
text: '抱歉,DeepSeek API 账户余额不足,请充值后再试。',
isUser: false
};
} else {
errorMessage = {
text: '抱歉,发生了错误,请稍后再试。',
isUser: false
};
}
setMessages(prev => [...prev, errorMessage]);
} finally {
setIsLoading(false);
}
};
const handleKeyDown = (e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
handleSend();
}
};
// 调用 DeepSeek API 的函数
const callDeepSeekAPI = async (prompt) => {
// 使用环境变量获取 API 密钥
const API_KEY = 'xxx'; // 这边用你自己的key
const API_URL = 'https://api.deepseek.com/v1/chat/completions';
try {
console.log('正在发送请求到 DeepSeek API...');
const response = await axios.post(
API_URL,
{
model: "deepseek-chat",
messages: [
{ role: "user", content: prompt }
],
temperature: 0.7,
max_tokens: 500 // 减少 token 数量以降低成本
},
{
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
}
}
);
console.log('API 响应:', response.data);
return response.data.choices[0].message.content;
} catch (error) {
console.error('API 错误详情:', error.response ? error.response.data : error.message);
throw error;
}
};
地址识别
最近我想想还能干些什么呢?有了,地址识别!于是就有了下面这个效果图。
或许有一丁丁点作用,识别一下省市区等功能。。。
实现原理也就是固定好要给他塞什么提示词,然后让他根据提示词返回固定的内容,根据这个内容前端来解析出有用的内容展示出来。
TODO
我再想想还有没有一些有点用的功能,比如输入两个人的出生年月日,来判断他们的姻缘、星座匹配程度、生辰八字、婚嫁良日,然后收费,然后。。。。。