AI demo
缘起
周四晚参加美团的招聘会,会上招聘负责人、北邮老学长魏小康对AI的一番宣讲,确实鼓舞人心,也让我有了很大紧迫感。
现在找实习很多技术岗位都是和AI相关,而自己却一直固守区块链,没有太多去拓扑AI领域知识,以及巧用AI工具来提效和进行创造。
为此,特地花费一天时间做了以下两个demo(意义基本没有,纯粹练手)
- AI翻译助手
- AI中医助手
基本就是使用大模型的文本能力做一点小应用,开发过程中用AI工具生成代码并不断调试。
使用工具简介
- 大模型API:腾讯混元大模型(用以实现应用的主要功能:中英文翻译、知识问答)
- IDE:VSCode+Copilot+Claude 3.7(开发前端、后端代码)
- 大模型软件:DeepSeek、豆包(询问一些开发bug或知识内容)
- 云平台:阿里云部署网站
AI翻译助手
代码工程开源在gitee ai-translator
这个工程中后端的翻译功能是调用混元的hunyuan-translation
模型,参考混元大模型的代码案例。前端直接让豆包帮我生成的,后面又让copilot进行渲染。
AI中医助手
代码工程开源在gitee ai-doctor
用混元的hunyuan-turbos-latest
模型。
遇到相对困难的点:
- copilot给出的工程案例代码中对混元大模型的调用部分是行不通的,使用openai库或混元库的一些函数或变量是不存在的。上腾讯云把混元大模型的代码基础案例发给copilot让其参照来写核心调用的函数。
- 实现非流式响应相对顺利,但是实现流式响应时遇到问题,copilot或豆包给出的代码都有问题,上官网找案例让它改核心调用。另外正确的解析响应并用好go通道和协程来输出流式数据到前端,copilot也没搞定,一点点分析解决了。
- 前端显示流式响应数据也存在一些小问题,复制反馈给copilot让其反复调了几次就好了。
debug
nginx
在阿里云服务器上部署“AI中医助手”服务后,需要让外部访问,但之前nginx代理上配置了将URI路径/
映射到当前博客页面,需要配置新的location块。
在/etc/nginx/sites-available/default
文件中折腾了一个钟,根据豆包指引检查location块的配置、nginx日志、nginx权限、配置语法nginx -t
等,终究一无收获。后来突然想到去查看nginx当前配置情况(nginx -T
),发现在文件中的设置完全没有被配置,才最终找到实际的配置文件/etc/nginx/conf.d/nginx.conf
。
卡在这里有这些原因:
- 问题描述没说清楚在哪个文件下进行配置(不过按理在nginx.conf或default中配置都行的,之前就是在default中配置过的,???)
- 没有试试其他大模型(云服务器上还是不太方便用AI工具的,如果把nginx配置的整个文件夹拉下来用copilot做分析也许能很快定位到)
用百度AI问了nginx.conf和default的区别
在 Nginx 中,nginx.conf 是主要的配置文件,它包含了 Nginx 服务器的所有配置信息。这个文件通常位于 /etc/nginx/ 目录下(具体位置可能根据操作系统和安装方式有所不同)。nginx.conf 文件可以被分为几个主要部分:
全局块:定义影响 Nginx 服务器整体运行的配置指令。
events块:配置影响 Nginx 服务器或与用户的网络连接。
http块:可以嵌套多个 server 块,是配置代理、缓存、日志定义等绝大多数的重要指令的场所。
server块:配置定义了特定的虚拟主机。
location块:用于匹配客户端请求的 URI(统一资源标识符)并对其进行处理。
示例配置
下面是一个基本的 nginx.conf 配置示例,展示了这些块的基本用法:
# 全局块
user nginx; # 运行 Nginx 的用户
worker_processes auto; # 根据 CPU 核心数自动设置工作进程数
error_log /var/log/nginx/error.log warn; # 错误日志文件及日志级别
pid /var/run/nginx.pid; # Nginx 进程 ID 文件
# events块
events {
worker_connections 1024; # 每个工作进程的最大连接数
}
# http块
http {
include /etc/nginx/mime.types; # MIME 类型定义文件
default_type application/octet-stream; # 默认的 MIME 类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; # 访问日志文件及格式定义
sendfile on; # 开启高效文件传输模式
keepalive_timeout 65; # 保持连接的时间
# server块
server {
listen 80; # 监听端口
server_name localhost; # 服务器名称
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件
# location块
location / {
try_files $uri $uri/ =404; # 尝试按顺序查找文件或目录,找不到则返回404错误
}
error_page 500 502 503 504 /50x.html; # 错误页面处理
location = /50x.html {
root /usr/share/nginx/html; # 错误页面的根目录
}
}
}
默认配置文件 default 或 default.conf
在 Nginx 中,通常还有一个名为 default 或 default.conf 的配置文件,它通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-enabled/ 目录下。这个文件通常用于定义一个默认的虚拟主机配置,当请求的域名没有在其它 server 块中定义时,Nginx 会使用这个默认配置。例如:
server {
listen 80 default_server; # 表示这是默认服务器配置
server_name _; # 通配符匹配所有域名(除了已经在其它 server 块中定义的)
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件
}