AI 嘴替,社交平台反杠机器人:第 2 篇-AI 助手

大家好,我是欧达克。

前面介绍了阿里 Turbo 大模型的集成,现在开始用 AI 工具编写前端代码。废话不多说,开搞。


提示词

先利用 DeepSeek,生成提示词。

我想用 cursor 生成 AI 嘴替应用的前端代码,帮我生成提示词,要求技术栈是 vue3 + uni-app,能实现基本的对话功能,页面需要简洁,美观

DeepSeek 回答:

DeepSeek 还贴心地生成了样例代码,但是本期的重点不在 DeepSeek 生成的代码,所以我们直接跳过。

Cursor

首先新增一个文件夹,命名 ROBOTALK-UNI-APP, 接着把 DeepSeek 生成的提示词,copy 到根目录的 README.md 文件中,然后开始 AI 对话:

这是一个基础的uni-app 项目模板,帮我根据提示词,生成对应的代码

生成的详细过程就不贴了,下面会直接贴出效果。

失败案例

因为我是要使用 uni-app 工具开发的,开始是想看 Cursor 会不会自动根据 uni cli 指令生成模板工程,但是发现并不会(我自测没生成,不知道其他人有没有遇到这个情况),然后在不生成模板工程的情况下,调试了很久,最终还是宣告失败。。。继续对话下去也可能会成功,但是不想花这个时间,所以直接放弃了。

成功案例

  1. 使用 HBuilderX 工具,生成基础的项目模板。
  1. 接下去也是一样,把提示词复制过来,继续对话。
  1. 发现 AI 有时候会犯一些低级的错误,比如.value 访问,或者函数没引入等等,但是整体上你把错误报给它,它都能很快修复问题。
  2. 调试了大概 1 小时时间,静态页面已经能够正常访问了,因为上一篇文章我们不是搞定了大模型对接吗?所以我们直接把接口的详细配置丢给 AI。
  1. 发现 AI 真的很强大,生成的代码质量真的很高,比如对一个简单的 http 请求的封装,我直接贴下源码:
javascript 复制代码
/**
 * API工具类
 * 封装所有与API交互相关的函数
 */

// API基础配置
export const API_CONFIG = {
  // 开发环境使用本地地址,生产环境可替换为线上地址
  baseUrl: process.env.NODE_ENV === 'development' ?
    'http://localhost:8080/robotalk/api' :
    'https://your-production-domain.com/robotalk/api',
  timeout: 10000, // 10秒超时
  endpoints: {
    ask: '/ask/turbo'
  }
};

/**
 * 带超时的API调用
 * @param {Object} options 请求选项
 * @returns {Promise} 返回API响应数据
 */
export const callApiWithTimeout = (options) => {
  return new Promise((resolve, reject) => {
    // 创建超时计时器
    const timeoutTimer = setTimeout(() => {
      reject(new Error('请求超时,请检查网络连接'));
    }, options.timeout || API_CONFIG.timeout);

    // 检查网络状态
    uni.getNetworkType({
      success: (networkState) => {
        // 如果没有网络连接,直接返回错误
        if (networkState.networkType === 'none') {
          clearTimeout(timeoutTimer);
          return reject(new Error('无网络连接,请检查网络设置'));
        }

        // 发起请求
        uni.request({
          url: options.url,
          method: options.method || 'GET',
          data: options.data || {},
          header: {
            'content-type': 'application/json',
            ...options.header
          },
          success: (res) => {
            clearTimeout(timeoutTimer);

            if (res.statusCode === 200 && res.data && res.data.success) {
              resolve(res.data.data);
            } else {
              // 更详细的错误信息处理
              const errorMsg = res.data?.errorContext ||
                `请求失败(${res.statusCode}): ${res.data?.errorCode || '未知错误'}`;
              reject(new Error(errorMsg));
            }
          },
          fail: (err) => {
            clearTimeout(timeoutTimer);
            reject(new Error(err.errMsg || '网络异常'));
          }
        });
      },
      fail: () => {
        clearTimeout(timeoutTimer);
        reject(new Error('无法获取网络状态'));
      }
    });
  });
};

/**
 * 发送消息到AI服务
 * @param {string} message 用户消息内容
 * @param {Object} options 额外选项(可选)
 * @returns {Promise<string>} AI回复内容
 */
export const sendMessageToAI = async (message, options = {}) => {
  try {
    // 请求开始时间,用于计算响应时间
    const startTime = Date.now();

    // 构建请求参数
    const requestData = {
      content: message,
      ...options.extraParams // 允许传入额外参数
    };

    // 发送请求
    const result = await callApiWithTimeout({
      url: options.url || (API_CONFIG.baseUrl + API_CONFIG.endpoints.ask),
      method: 'POST',
      data: requestData,
      timeout: options.timeout,
      header: options.headers
    });

    // 计算响应时间(毫秒)
    const responseTime = Date.now() - startTime;
    console.log(`AI响应时间: ${responseTime}ms`);

    return result;
  } catch (error) {
    console.error('AI服务调用失败:', error);

    // 记录失败的请求内容,便于调试
    if (process.env.NODE_ENV === 'development') {
      console.log('失败的请求内容:', message);
    }

    throw error;
  }
}; 
  • 环境变量自适应(开发/生产环境不同API地址)
  • 超时处理
  • 统一错误处理
  • API调用封装

效果展示

  1. 首页
  1. 对话框(我这里并没有详细要求 AI 去优化 UI,这些都是 AI 根据提示词自己生成的)
  1. 视频演示

Trae

接着是使用 Trae 来完成 AI 嘴替 应用的前端开发。

  1. 这里直接拷贝模板文件到根目录下,要求 Trae 直接基于 README.md 文件开始生成代码。生成过程中好几次出现等待、网络连接的问题。
  1. 不知道是因为第一次使用 Cursor 时候有前车之鉴,在使用 Trae 的时候,除了偶尔的等待和网络问题,整个过程异常丝滑,没有出现 Cursor 偶尔降智的情况,但是有个小问题,Trae 生成的代码中,也包含了启动页,不过在生成的代码中,打开启动页默认直接跳到到聊天页了。
  1. 继续和 Trae 对话,需要保留启动页,并完善代码。
  1. 启动页效果如下。

但是 Trae 并没有理会我在 README.md 中提到的 vite 构建工具,之后是单独再和 Trae 对话,让项目集成 vite。最终发现 vite 集成的时间比功能代码生成的时间还长,并且还出现了部分语法错误。。。

Trae 竟然直接罢工了,后续再也连不上 Trae 了,得等几百号人。。。

试了很久还是没成功,最终我还是放弃了😢😢😢

总结

Cursor 过程比较曲折,但是最终确实是按预期生成了,Trae 在代码生成效率确实很高,但是不知道为什么,在集成 vite 工具的时候,过程中我感觉改了很多我看不懂的配置,最终导致整个项目启动失败,后续有时间会再做尝试。

好了,本文就是对 Cursor 和 Trae 两个 AI 工具的实战演示,这里再强调一遍是基于自己的验证结果,样本太小,不足以说明什么问题,如果你自己的验证过程中,发现结果和我不一致,那也没什么问题,毕竟 AI 生成的代码也不是完全一致的。

后续会继续基于 AI 生成的代码做些 UI 上的优化,敬请期待。

我是欧达克,祝你幸福。

相关推荐
网安刚哥11 小时前
MCP Server 牛刀小试之雷池WAF MCP
程序员·github·ai编程
ssshooter14 小时前
2025 最新 AI 模型深度对比:ChatGPT、Claude、Gemini到底选谁?
程序员·aigc·openai
Phodal15 小时前
AutoDev Next:IDE 即 AI 编程服务,构建多端粪围编程
程序员·ai编程
京东云开发者19 小时前
字符串替换研究
程序员
京东云开发者19 小时前
【LangChain】一文读懂RAG基础以及基于langchain的RAG实战
程序员
程序员鱼皮19 小时前
被运营商卡脖子了。。。你们的短信也发送失败了么?
计算机·程序员·互联网·网站·编程经验·事故
suke20 小时前
一文秒懂AI核心:Agent、RAG、Function Call与MCP全解析
人工智能·程序员
Goboy20 小时前
从零开始,用JupyterLab和TensorFlow打造你的第一个猫狗识别模型
后端·程序员·架构
马可奥勒留1 天前
世界之大,无奇不有
程序员