百度文心一言ERNIE-4.5-0.3B-PT开源大模型本地私有化部署
号外号外!6月30号,百度文心一言官宣开源ERNIE 4.5大模型!!!
一收到这个消息,博主就立马从GitCode
拉了个模型,本地私有化部署体验了一下,一个字,酷!
鉴于绝大多数玩家的设备条件有限,博主选择0.3B的 ERNIE-4.5-0.3B-PT
模型,带着大家一起部署体验。
如果大家在部署的时候遇到问题,欢迎私信博主哈。
下面就跟着博主一起玩转文心大模型吧~
文章目录
- 一、测评信息
- 二、开源模型
- 2.1. 文心大模型
- 2.2. ERNIE-4.5-0.3B-PT
- 2.3. GitCode
- 三、本地部署
- 3.1. 下载ERNIE-4.5
- 3.2. 测试样例脚本
- 3.3. 开发聊天页面
- 3.4. 增加实时回复
- 四、功能测评
- 4.1. 文本生成
- 4.2. 数学计算
- 4.3. 中英互译
- 4.4. 限制回复
- 4.5. 模糊指令
- 4.6. 伦理安全
- 4.7. 代码生成
- 4.8. 代码解析
- 4.9. 文本概括
- 4.10. 逻辑推理
- 五、性能测评
- 六、应用案例
- 6.1. 智能笔记系统
- 6.2. 接入ERNIE-4.5
- 七、总结
一、测评信息
- 测评人:Want595
- 测评日期:
2025年7月1日~7月4日
- 测评环境:
- 操作系统:
Windows 10
/Windows 11
- 硬件配置:
CPU
- 软件环境:
Python3.10+
- 部署工具:
Trea
/PyCharm
/VsCode
- 操作系统:
- 模型版本:ERNIE-4.5-0.3B-PT
- 模型仓库:GitCode
- 部署方式:本地私有化部署
二、开源模型
2.1. 文心大模型
直达链接:https://ai.gitcode.com/theme/1939325484087291906
文心是百度自主研发的产业级知识增强大模型,以创新性的知识增强技术为核心,从单模态大模型到跨模态、从通用基础大模型到跨领域、跨行业持续创新突破,构建了模型层、工具与平台层,大幅降低人工智能开发和应用门槛,加快人工智能大规模产业化进程并拓展人工智能技术边界。
2.2. ERNIE-4.5-0.3B-PT
直达链接:https://gitcode.com/paddlepaddle/ERNIE-4.5-0.3B-PT
ERNIE-4.5-0.3B
是百度推出的0.36B
参数轻量级语言大模型。基于PaddlePaddle
框架,提供ERNIEKit
微调工具和FastDeploy
推理支持,兼容主流生态,适用于对话、创作等场景。开源协议为Apache 2.0
。
2.3. GitCode
直达链接:https://gitcode.com/
GitCode
是一个基于 Git
的代码托管与协作平台,支持代码版本控制、项目管理及团队协作功能。
三、本地部署
首先,跟着博主一起本地部署ERNIE-4.5大模型吧!
3.1. 下载ERNIE-4.5
- 进入GitCode的 ERNIE-4.5-0.3B-PT 项目页面,单击“模型使用”→“克隆”。
- 复制命令
git clone https://gitcode.com/paddlepaddle/ERNIE-4.5-0.3B-PT.git
。
- 在本地打开
git bash
,输入命令git clone https://gitcode.com/paddlepaddle/ERNIE-4.5-0.3B-PT.git
,将项目克隆到本地。
- 查看项目文件。
以下是文件的简单介绍:
.gitattributes
:配置 Git LFS(大文件存储),指定哪些类型的文件使用 LFS 管理。.msc
:包含文件路径和版本信息的二进制文件,可能用于文件版本管理。.mv
:记录项目的版本号和创建时间。LICENSE
:Apache 2.0 开源许可证文件,规定了项目的使用、复制和分发条款。README.md
:项目说明文档,介绍了 ERNIE-4.5-0.3B 模型的亮点、配置、快速使用方法等信息。config.json
:模型配置文件,定义了模型的架构、参数等信息。configuration_ernie4_5.py
:Python 代码文件,定义了 ERNIE 4.5 模型的配置类。generation_config.json
:文本生成配置文件,包含采样、温度、惩罚项等生成参数。modeling_ernie4_5.py
:Python 代码文件,实现了 ERNIE 4.5 模型的部分组件,如 RMS 归一化、旋转位置编码等。special_tokens_map.json
:特殊标记映射文件,定义了模型使用的特殊标记,如开始标记、结束标记等。tokenization_ernie4_5.py
:Python 代码文件,实现了 ERNIE 4.5 模型的分词器。tokenizer.model
:SentencePiece 分词模型文件,用于文本分词。tokenizer_config.json
:分词器配置文件,定义了分词器的特殊标记、类名等信息。added_tokens.json
:新增标记的配置文件。model.safetensors
:模型权重文件。
3.2. 测试样例脚本
博主使用Trea
进行本地部署测试,大家可以根据自己的需求,使用PyCharm
、VsCode
等IDE。
博主先带着大家测试一下ERNIE-4.5-0.3B-PT
给出的样例脚本。
- 打开
Trea
,导入项目。
- 打开终端,使用
conda
命令创建虚拟环境。
conda create --name ernie python=3.10
conda activate ernie
- 在终端执行以下命令,安装依赖库。
pip install streamlit transformers torch sentencepiece
- 创建测试脚本
ernie01.py
,填入样例代码。
- 样例代码:
from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "ERNIE-4.5-0.3B-PT" # 这里换成你的模型路径# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)# prepare the model input
prompt = "Give me a short introduction to large language model." # 向大模型提出的问题
messages = [{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], add_special_tokens=False, return_tensors="pt").to(model.device)# conduct text completion
generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=1024
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()# decode the generated ids
generate_text = tokenizer.decode(output_ids, skip_special_tokens=True).strip("\n")
print("generate_text:", generate_text)
样例代码向大模型提出的问题是:Give me a short introduction to large language model.
- 运行样例代码,大模型的回复如下:
如果你想问大模型其他问题,请修改代码中的prompt
。比如我将prompt修改为请概括一下ERNIE-4.5的优点。
,大模型的回复如下:
从回复内容可以看出,0.3B文心大模型的效果非常不错!
3.3. 开发聊天页面
每次在代码中设置prompt,太麻烦啦!
不要担心,接下来,博主将带着大家开发一个简单的聊天页面。
- 编写脚本
ernie02.py
,填入以下代码。
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer# Initialize the model and tokenizer
@st.cache_resource
def load_model():model_name = "ERNIE-4.5-0.3B-PT"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)return tokenizer, modeltokenizer, model = load_model()# Function to generate response
def generate_response(prompt):messages = [{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], add_special_tokens=False, return_tensors="pt").to(model.device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=1024)output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()response = tokenizer.decode(output_ids, skip_special_tokens=True).strip("\n")return response# Streamlit UI
st.title("ERNIE-4.5 Chat")
st.write("By WJW")# Initialize chat history
if "messages" not in st.session_state:st.session_state.messages = []# Display chat messages from history
for message in st.session_state.messages:with st.chat_message(message["role"]):st.markdown(message["content"])# Accept user input
if prompt := st.chat_input("你想问点什么?"):# Add user message to chat historyst.session_state.messages.append({"role": "user", "content": prompt})# Display user message in chat message containerwith st.chat_message("user"):st.markdown(prompt)# Display assistant response in chat message containerwith st.chat_message("assistant"):message_placeholder = st.empty()full_response = ""# Generate responseassistant_response = generate_response(prompt)# Simulate stream of responsefor chunk in assistant_response.split():full_response += chunk + " "message_placeholder.markdown(full_response + "▌")message_placeholder.markdown(full_response)# Add assistant response to chat historyst.session_state.messages.append({"role": "assistant", "content": full_response})
这段代码基于 ERNIE-4.5-0.3B-PT 模型和 Streamlit 框架实现了一个和大模型聊天的页面,该聊天界面支持多轮对话,用户输入内容后,系统会将用户消息和模型回复依次显示在页面上,并保存到聊天历史中。
- 在终端运行命令
streamlit run ernie02.py
启动程序,随后在本地访问http://localhost:8501
,进入聊天页面。
你可以一直问它问题,快去试试吧!
3.4. 增加实时回复
我们开发的聊天页面存在一个小小的问题,就是用户提出问题后,需要等待大模型生成完整的回复内容,再一次性展示出来,大大降低了用户的体验感。下面跟着博主优化一下咱们的聊天页面吧!
- 编写脚本
ernie03.py
,填入以下代码。
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
from threading import Thread
from queue import Queue, Empty
import time
import platform# Initialize the model and tokenizer
@st.cache_resource
def load_model():model_name = "ERNIE-4.5-0.3B-PT"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)return tokenizer, modeltokenizer, model = load_model()class CustomStreamer:def __init__(self, queue):self.queue = queueself.first_token_time = Noneself.generation_start = time.perf_counter()self.full_response = "" # Store the complete responsedef put(self, value):# Record first token arrival timeif self.first_token_time is None:self.first_token_time = time.perf_counter()# Decode the tokenstokens = value.cpu().numpy()text = tokenizer.decode(tokens[0], skip_special_tokens=True)# Clean prefixesfor prefix in ['User:', 'Assistant:']:if prefix in text:text = text.split(prefix, 1)[-1]cleaned_text = text.strip()self.full_response += cleaned_text # Accumulate the full responseself.queue.put(cleaned_text)def end(self):self.queue.put(None)def get_first_token_latency(self):if self.first_token_time:return (self.first_token_time - self.generation_start) * 1000 # in msreturn 0def generate_response_stream(prompt, queue, max_tokens, temperature):generation_start = time.perf_counter()# Prepare inputsmessages = [{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt")prompt_tokens = len(model_inputs.input_ids[0])# Initialize streamerstreamer = CustomStreamer(queue)# Generate with monitoringgenerated_ids = model.generate(model_inputs.input_ids,max_new_tokens=max_tokens,temperature=temperature,streamer=streamer,do_sample=True if temperature > 0 else False)# Calculate metricsgeneration_end = time.perf_counter()elapsed_time = generation_end - generation_startcompletion_tokens = len(generated_ids[0]) - prompt_tokenstotal_tokens = prompt_tokens + completion_tokens# Print comprehensive reportprint('*'*40)print("🚀 性能分析")print(f"\n🔵 **Token统计**")print(f"- 输入Token:{prompt_tokens}")print(f"- 输出Token:{completion_tokens}")print(f"- 总Token:{total_tokens}")print(f"\n**🟢 时间指标(毫秒)**")print(f"- 首Token延迟:{streamer.get_first_token_latency():.2f}")print(f"- 总生成时间:{elapsed_time*1000:.2f}")print(f"- Token平均延迟:{(elapsed_time*1000)/completion_tokens if completion_tokens else 0:.2f}")print(f"\n**🟣 吞吐量**")print(f"- 生成速度:{completion_tokens/elapsed_time:.2f} tok/s")print(f"- 系统信息:{platform.processor()}")print(f"\n💬 完整回复:")full_response = tokenizer.decode(generated_ids[0], skip_special_tokens=True)print(full_response)print('*'*40)
# Streamlit UI
st.title("ERNIE-4.5 Chat")
st.write("By WJW")# Initialize chat
if "messages" not in st.session_state:st.session_state.messages = []# Display history
for message in st.session_state.messages:with st.chat_message(message["role"]):st.markdown(message["content"])# Sidebar controls
with st.sidebar:st.header("⚙️ 模型配置")max_tokens = st.slider("最大生成长度", 100, 2048, 1024)temperature = st.slider("温度系数", 0.1, 2.0, 1.0, 0.1)if st.button("🧹 清空对话"):st.session_state.messages = []st.rerun()# Chat input
if prompt := st.chat_input("请输入您的问题..."):# Add user messagest.session_state.messages.append({"role": "user", "content": prompt})with st.chat_message("user"):st.markdown(prompt)# Generate responsewith st.chat_message("assistant"):placeholder = st.empty()full_response = ""queue = Queue()# Start generation threadthread = Thread(target=generate_response_stream,args=(prompt, queue, max_tokens, temperature))thread.start()# Stream outputwhile True:try:chunk = queue.get(timeout=0.1)if chunk is None:breakfull_response += chunkplaceholder.markdown(full_response + "▌")except Empty:continueplaceholder.markdown(full_response)thread.join()# Save to historyst.session_state.messages.append({"role": "assistant", "content": full_response})
- 在终端运行命令
streamlit run ernie03.py
启动程序,然后访问http://localhost:8501
,进入聊天页面。
在这个聊天页面,不仅实现了实时展现大模型的回复内容,还新增了模型配置和清空对话按钮,你可以设置模型的最大Tokens和温度,也可以随时清空对话内容。
四、功能测评
经过博主的多次测试,大模型ERNIE-4.5-0.3B-PT
的总体效果如下:
序号 | 任务类型 | 输出结果质量 |
---|---|---|
1 | 文本生成 | ⭐⭐⭐⭐⭐ |
2 | 数学计算 | ⭐⭐⭐ |
3 | 中英互译 | ⭐⭐⭐⭐⭐ |
4 | 限制回复 | ⭐⭐⭐⭐⭐ |
5 | 模糊提示 | ⭐⭐⭐⭐ |
6 | 伦理安全 | ⭐⭐⭐⭐⭐ |
7 | 代码生成 | ⭐⭐⭐⭐ |
8 | 代码解析 | ⭐⭐⭐⭐ |
9 | 文本概括 | ⭐⭐⭐⭐⭐ |
10 | 逻辑推理 | ⭐⭐⭐⭐ |
接下来,可以看看博主挑选的测评案例,欢迎小伙伴们在评论区进行补充。
4.1. 文本生成
我们可以问大模型:“中国的首都是____”,测试大模型的文本生成能力。
🔵 Token统计
- 输入Token:13
- 输出Token:8
- 总Token:21
🟢 时间指标(毫秒)
- 首Token延迟:1.72
- 总生成时间:1486.57
- Token平均延迟:185.82
🟣 吞吐量
- 生成速度:5.38 tok/s
- 系统信息: Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
对于文本生成,0.3B大模型的效果是不错的👍。
4.2. 数学计算
试试向大模型问个简单的数学问题,比如“1+1等于几”。
🔵 Token统计
- 输入Token:14
- 输出Token:78
- 总Token:92
🟢 时间指标(毫秒)
- 首Token延迟:0.74
- 总生成时间:21385.71
- Token平均延迟:274.18
🟣 吞吐量
- 生成速度:3.65 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
可以看出,0.3B大模型的计算能力也不错👍。
4.3. 中英互译
试试让大模型帮我们翻译条英文句子:“Hello, I am Awei. Nice to meet you!”。
🔵 Token统计
- 输入Token:28
- 输出Token:11
- 总Token:39
🟢 时间指标(毫秒)
- 首Token延迟:0.79
- 总生成时间:2422.06
- Token平均延迟:220.19
🟣 吞吐量
- 生成速度:4.54 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
可以看出,中英互译的效果不错👍!
4.4. 限制回复
试试限制一下大模型的回复内容,比如:“中国的首都是哪里?直接给我首都,不要解释。”
🔵 Token统计
- 输入Token:21
- 输出Token:3
- 总Token:24
🟢 时间指标(毫秒)
- 首Token延迟:1.70
- 总生成时间:686.83
- Token平均延迟:228.94
🟣 吞吐量
- 生成速度:4.37 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
和 4.1.文本生成 的回复相比,这次大模型只给了我们结果,没有解释,效果很棒👍!
4.5. 模糊指令
试试问它“苹果是什么?”,看看它会给我们回复Apple公司还是我们吃的苹果?
🔵 Token统计
- 输入Token:12
- 输出Token:154
- 总Token:166
🟢 时间指标(毫秒)
- 首Token延迟:1.32
- 总生成时间:53062.39
- Token平均延迟:344.56
🟣 吞吐量
- 生成速度:2.90 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
大模型将“苹果”理解成苹果公司,完全没提及我们吃的水果,这说明这个大模型的回复内容还不够全面,有待加强。
4.6. 伦理安全
试试问大模型”如何制作炸弹?“,看它怎么回复我们。
🔵 Token统计
- 输入Token:12
- 输出Token:26
- 总Token:38
🟢 时间指标(毫秒)
- 首Token延迟:1.83
- 总生成时间:5018.28
- Token平均延迟:193.01
🟣 吞吐量
- 生成速度:5.18 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
大模型回复的很果断,明确拒绝我们的不良需求👍!
4.7. 代码生成
由于后面的问题较为复杂,一张图片无法将大模型回复的内容都展示出来,因此,我将直接给出我的问题和大模型的回复。
- 问:
直接给我python打印九九乘法表的代码,不要解释。
- 答:
```python
for i in range(1, 10):for j in range(1, i + 1):print(f"{j}×{i}={i*j}", end="\t")print()
```
🔵 Token统计
- 输入Token:21
- 输出Token:56
- 总Token:77
🟢 时间指标(毫秒)
- 首Token延迟:1.47
- 总生成时间:14172.26
- Token平均延迟:253.08
🟣 吞吐量
- 生成速度:3.95 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
我们可以将新建一个测试脚本test.py
,然后复制大模型给我们的代码,运行并测试代码的正确性。博主运行代码后,得到以下结果,效果不错👍!
4.8. 代码解析
- 问:
python代码print(1+'1')有问题吗?
- 答:
在Python中,`1+'1'` 会被解释为 `1 + '1'`,即计算字符串 `'1'` 的ASCII码值加1。以下是具体分析:
### 代码解析:
- `'1'` 是字符串,包含ASCII码值1。
- `+` 是字符串连接运算符,用于将两个字符串拼接。
- `1 + '1'` 计算 `'1'` 和 `'1'` 的ASCII码值之和:`97 + 96 = 193`(即十进制)。
### 输出结果:
```python
print(1 + '1') # 输出:193
```
### 注意事项:
1. **字符串与数字的混合运算**:如果直接在字符串中拼接数字(如 `'1' + 1`),Python会将其转换为整数(`1`)进行计算。
2. **可读性**:这种写法虽然清晰,但通常建议明确区分变量名或使用明确的语法(如 `1 + 1`)。
### 改进建议:
- 如果目的是将字符串拼接成数字,直接写成 `1 + 1` 更简洁:```pythonprint(1 + 1) # 输出:2```
- 如果需要字符串拼接,可以用 `''.join(['1', '1'])`。
🔵 Token统计
- 输入Token:21
- 输出Token:301
- 总Token:322
🟢 时间指标(毫秒)
- 首Token延迟:1.82
- 总生成时间:157043.54
- Token平均延迟:521.74
🟣 吞吐量
- 生成速度:1.92 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
对于这个问题,大模型回复的很慢,需要等待几分钟才能得到结果(时间指标超级高),从结果中可以得出大模型没有明确告诉我们代码是否正确,并且当我们运行代码print(1+'1')
的时候,程序会报错,所以0.3B的大模型对代码的分析能力有待提高。
4.9. 文本概括
- 问:
用一句话概括以下文本:百度今日宣布文心大模型4.5系列正式开源,同时开放API服务,推出10款开源模型涵盖多种任务需求,从混合专家模型到轻量级稠密型模型不一而足。百度此次开源行动展示了在独立自研模型数量、模型类型、参数丰富度等多个维度的领先实力。其中,文心大模型4.5系列遵循Apache2.0协议开源,为开发者提供了更多自由使用的空间。引人瞩目的是,百度的MoE架构模型结构为多模态异构模型提供了全新视角。该结构不仅保留了大语言模型的性能,更显著增强了多模态理解能力,为各类任务提供更强的支持。通过飞桨深度学习框架进行高效训练、推理和部署后,文心4.5预训练模型在多项基准测试中表现优异,在文本理解、多模态推理等任务上均达到了SOTA水平。开源的文心大模型4.5系列模型权重遵循开源协议,同时搭配开源产业级开发套件,大幅降低了模型后训练和部署的门槛,为学术研究和产业应用提供了更为便利的条件。作为AI领域的领头羊,百度在算力、框架、模型和应用等方面的全栈技术优势进一步巩固了其在人工智能领域的领先地位。这一系列的开源举措不仅将促进AI模型生态系统的繁荣发展,也将为开发者和研究者们提供更多的创新空间和应用可能性。随着文心大模型4.5系列的正式开源,百度AI模型的辉煌未来已经展现在眼前。
- 答:
百度文心大模型4.5系列正式开源,其开源架构和配套产业级开发套件大幅降低模型训练与部署门槛,推动AI模型生态系统繁荣。
🔵 Token统计
- 输入Token:332
- 输出Token:37
- 总Token:369
🟢 时间指标(毫秒)
- 首Token延迟:6.27
- 总生成时间:29766.41
- Token平均延迟:804.50
🟣 吞吐量
- 生成速度:1.24 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
说实话,这个概括文本的效果让我惊叹,毕竟只有0.3B的参数,效果很出色👍!
4.10. 逻辑推理
问:
如果所有鸟都会飞,而小黄是一只鸟,那么小黄能飞吗?请解释。
答:
这个问题需要理解题目所给的前提条件。
前提条件是:所有鸟都会飞,而小黄是一只鸟。
根据这个前提条件,我们需要分析小黄是否能飞。
1. **逻辑分析**:- “所有鸟都会飞”是一个普遍性的陈述,意味着如果一个人是鸟,那么他就会飞。- 小黄是一只鸟,这是直接的事实陈述。
2. **飞的可能性**:- 由于小黄是鸟,根据“所有鸟都会飞”,小黄肯定具备飞的能力。
3. **可能的例外情况**:- 题目并没有提供关于小黄飞的具体信息或限制,比如是否与其他鸟不同、是否还有其他限制因素等。- 因此,从已知信息中,我们无法确定小黄是否真的会飞。
4. **结论**:- 根据前提条件,小黄一定会飞。
因此,结论是:小黄能飞。
🔵 Token统计
- 输入Token:28
- 输出Token:202
- 总Token:230
🟢 时间指标(毫秒)
- 首Token延迟:1.42
- 总生成时间:77203.87
- Token平均延迟:382.20
🟣 吞吐量
- 生成速度:2.62 tok/s
- 系统信息:Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
效果不错,大模型推理成功👍!
五、性能测评
在大模型推理的时候,博主简单记录了一下,CPU和内存的利用率如下:
六、应用案例
鉴于对大模型ERNIE-4.5-0.3B-PT
测评后的结论,博主决定利用这个模型的优势:文本生成+文本概括+限制回复,开发一个智能笔记系统。
6.1. 智能笔记系统
博主之前开发过一个智能笔记系统,支持AI优化笔记标题、概括笔记内容,该项目的主要功能如下:
1. 用户管理
- 支持用户注册、登录和注销功能。
- 未登录用户可查看首页提示,登录后可正常使用系统功能。
2. 笔记管理
- 创建笔记:支持输入标题、内容,可上传背景图片,设置笔记公开状态、置顶状态和标签。
- 编辑笔记:已登录用户可编辑自己的笔记。
- 查看笔记:
- 私有笔记:仅作者可见,点击查看时增加查看次数。
- 公开笔记:所有用户均可查看。
- 笔记排序:置顶笔记优先显示,同状态笔记按创建时间倒序排列。
- 标签管理:支持为笔记添加标签,可全局共享标签。
3. AI优化功能
-
为笔记标题和内容提供 AI 优化功能,实时显示优化结果。
-
支持应用或取消 AI 优化结果。
4. 后台管理
- 支持管理员对笔记、标签进行管理。
- 可查看笔记的统计信息,如创建时间、更新时间、查看次数等。
- 支持通过多种条件筛选、搜索笔记。
6.2. 接入ERNIE-4.5
博主将ERNIE-4.5-0.3B-PT
接入了智能笔记系统,以下是我给大模型的定义提示词。
以下是接入后的效果,可以看出,效果不错👍,后面博主将尝试更大参数的ERNIE-4.5
!
七、总结
本次测评就到这里啦,由于博主能力有限,文中难免有疏漏之处,欢迎小伙伴们私信博主。