当前位置: 首页 > 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;}}
}

http://www.xdnf.cn/news/179911.html

相关文章:

  • Java学习手册:开发 Web 网站要知道的知识
  • 马哥教育Linux云计算运维课程
  • GIS开发笔记(16)解决基于osg和osgearth三维地图上添加placeNode图标点击不易拾取的问题
  • 火语言RPA--企业微信群通知
  • vue3 内置组件KeepAlive的使用
  • Spark Streaming核心编程总结(四)
  • QtDesigner中的Spacers弹簧/间隔器
  • 一主多从+自组网络,无线模拟量信号传输专治布线PTSD
  • C语言(3)—分支和循环
  • WinForm真入门(18)——DateTimePicker‌控件解析
  • 13.组合模式:思考与解读
  • MCP实战-本地MCP Server + Client实战
  • 创建一个开机自启的服务
  • 题海拾贝:P2858 [USACO06FEB] Treats for the Cows G/S
  • 大模型图像编辑那家强?
  • 多模态常见面试题
  • 新魔百和CM311-5_CH/YST/ZG代工_GK6323V100C_2+8G蓝牙版_强刷卡刷固件包(可救砖)
  • SpringMVC 前后端数据交互 中文乱码
  • 【深度剖析】贵州茅台的数字化转型(2025)(上篇)
  • 第7章 内部类与异常类
  • 【蓝桥杯省赛真题57】Scratch穿越病毒区 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • Vue.js 核心特性解析:响应式原理与组合式API实践
  • 论文检索相关网站
  • ‌RISC-V架构的低功耗MCU多电压域优化设计
  • final static 中是什么final static联合使用呢
  • 【算法刷题】
  • MySQL 8.0 忘记登录密码 mysqld --init-file重置
  • AG32 MCU系列三合一芯片,MCU+ 2K cpld + 64Mbit PSRAM,一颗芯片同时满足多种需求。
  • 清华团队提出时序聚类数据库内高效方案,已被SIGMOD 2025接收
  • 【Tools】chezmoi 跨多台不同的机器管理 dotfiles 的工具