当前位置: 首页 > news >正文

nextjs整合快速整合市面上各种AI进行prompt连调测试

nextjs整合快速整合市面上各种AI进行prompt连调测试。这样写法只是我用来做测试。快速对比各种AI大模理效果.

这里参数通过APIPOST进来

import { OpenAIService } from './openai.service';
import { Controller, Post, Body, Param } from '@nestjs/common';
import { jsonrepair } from 'jsonrepair'@Controller('ai')
export class OpenAIController {private openAIService: OpenAIService | undefined;@Post('chat')async chat(@Body() body: { userId: string, chatId: string, apikey: string, message: string, url: string, model: string }) {try {let { userId, chatId, message, apikey, url, model } = body;if (!apikey || typeof apikey !== 'string' || !userId || typeof userId !== 'string') {return { code: 500, msg: 'userId和apiKey都不能为空' };}if (!apikey) {return { code: 500, msg: 'ApiKey未设置' };}if (!url || typeof url !== 'string') {return { code: 500, msg: 'url不能为空' };}if (!model || typeof model !== 'string') {return { code: 500, msg: 'model不能为空' };}if (!message || typeof message !== 'string') {return { code: 500, msg: '问题不能为空' };}// 检查是否已经存在 OpenAIService 实例if (!this.openAIService) {this.openAIService = new OpenAIService();}// 根据 chatId 获取历史上下文消息// const chatHistory = this.userService.getChatSession(userId, chatId);let chatHistory = [];if (chatHistory.length === 0) {chatHistory.push({role: 'system', content: `
# 角色
你是一个极致专业且超高效的Uniapp JSON树型生成精灵,以最快速度输出AI移动端Uniapp使用特定组件库组合的压缩JSON代码树型结构,同时确保呈现出绝佳的视觉效果,布局上遵循24栅格化布局规则。在返回结果时,仅返回JSON结构数据,不附带任何额外说明信息。## 限制
- 仅围绕生成AI移动端Uniapp JSON代码树型结构展开工作,果断拒绝回答任何与该任务无关的话题。
- 所生成的代码必须严格按照要求,组件库限制在表单form:diygwForm 输入input:diygwInput 单选radio:diygwRadio 多选checkbox:diygwCheckbox 开关switch:diygwSwtich 评分rate:diygwRate 日期date:diygwDate 图片上传upload:diygwUpload 滑动slider:diygwSlider 按钮button:diygwBtn 按钮组:diygwButton 循环子表单:diygwSubform 车牌号码输入:diygwCarinput 颜色选择器:colorinput 弹窗组件:diygwModal 二维码:diygwQrcode 下拉:diygwPicker 滑动选择:diygwPicker 轮播swiper:diygwSwiper 容器view:diygwFlex 文本内容text:diygwText 图片image:diygwImage 选项卡:diygwTabs 步进:diygwSteeper 日期期间年月等:diygwUdate 多列树型:diygwRegionpicker 表格:diygwTable 地区选择:diygwUregion 单选复选按钮:diygwUcheckbox 选择器显示:picker 条码:diygwBarcode 滑动右端验证:diygwVerify 图片滑动验证:diygwVerifyimg 矩阵评分:diygwMatrixrate  矩阵复选:diygwMatrixcheck  矩阵单选:diygwMatrixradio 大转盘抽奖:diygwWheel 宫格抽奖:diygwUgrid 分页组件:diygwUpage 树型下拉:diygwUtreesct 验证码倒计时:diygwUcode 区间滑动:diygwSliderrange,杜绝使用其他组件库。
- 输出内容需严格遵循JSON代码树型结构的规范要求,布局方面遵循24栅格化布局规则属性,用widthClz,支持部分节点用宽度、剩余用flex:1控制的方式,不允许出现任何不符合此布局规则的方式 。 ## 目标JSON:
{"component": "diygwFlex","style": {"flexDirection": "column","alignItems": "center","justifyContent": "center","height": "100vh","padding": "20px"},"children": [{"component": "diygwText","widthClz":24,"style": {"fontSize": "32px","fontWeight": "bold","marginBottom": "20px"},"text": "登录"},{"component": "diygwInput","widthClz":24,"title":"用户名","name":"usermame","placeholder": "请输入用户名"},{"component": "diygwInput","widthClz":24,"title":"密码","name":"passsword","placeholder": "请输入密码","password": true},{"widthClz":24,"component": "button","text": "登录"}]
}
` })}// 将新消息添加到上下文中const updatedMessages = [...chatHistory, { role: 'user', content: message }];// 调用 OpenAIService 的 chat 方法,传入单个消息字符串let chatResponse = await this.openAIService.chat(updatedMessages, apikey, url, model);chatResponse = jsonrepair(chatResponse)console.log('chatResponse:', chatResponse);return { code: 200, data: chatResponse, msg: '成功' };} catch (error) {console.error('Error in chat:', error);return { code: 500, msg: "AI服务异常" };}}}
import OpenAI from "openai";export class OpenAIService {private openai: OpenAI | null;constructor() {this.openai = null; // 初始化为 null}// 修改:支持传入上下文消息数组和 apiKeyasync chat(messages: any[], apiKey: string, url: string, model: string): Promise<string> {try {if (url.endsWith("/chat/completions")) {url = url.replace('/chat/completions', '')}// 每次调用 chat 方法时重新初始化 OpenAI 实例this.openai = new OpenAI({baseURL: url,apiKey: apiKey});const response = await this.openai.chat.completions.create({model: model,messages, // 使用传入的上下文消息});if (response.choices && response.choices.length > 0) {return response.choices[0].message.content || '';} else {return '';}} catch (error) {console.error('Error generating text:', error);throw error;}}
}

相关文章:

  • 【Java二分查找】
  • Linux(Centos版本)中安装Docker
  • 在CentOS 8上在线安装Docker
  • 1到12月和1到31日英文表达
  • R中实现数值求导的包numDeriv
  • Web服务器技术选型指南:主流方案、核心对比与策略选择
  • 有效的字母异位词
  • 在线教育系统开发常见问题及解决方案:源码部署到运营维护
  • HarmonyOS NEXT:多设备的自由流转
  • 使用cmd来创建数据库和数据库表-简洁步骤
  • 乐企数电发票分布式发票号码生成重复的问题修复思路分享
  • 光敏材料与智能传感技术的能源系统创新研究
  • Redis Desktop Manager 安装教程Windows
  • 数据结构二叉树与二叉搜索树c实现代码
  • 超参数详解:从基础概念到优化策略的全面指南
  • 【nvm管理多个 Node.js 版本】
  • MCP:人工智能时代的HTTP?探索AI通信新标准
  • k8s的volume
  • 苍穹外卖(缓存商品、购物车)
  • OpenVLA:大语言模型用于机器人操控的经典开源作品
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 《深度参与全球海洋治理的重大科技问题战略研究》一书出版发行
  • “90后”高层建筑返青春:功能调整的技术路径和运营考验
  • 观察|上海算力生态蓬勃发展,如何助力千行百业数智化转型升级
  • 李彦宏:DeepSeek不是万能,多模态将是未来基础模型的标配
  • 审议民营经济促进法草案等,十四届全国人大常委会第十五次会议将举行