12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { AgentTaskStep } from 'src/agent/agent.task';
- import { getUserInput } from 'src/agent/agent.input';
- import { ModalController } from '@ionic/angular/standalone';
- import { FmodeChatCompletion } from 'fmode-ng';
- import { extactAndParseJsonFromString } from 'src/agent/agent.json';
- export function TaskInqueryUserStory(options:{
- modalCtrl:ModalController
- shareData:any}
- ):AgentTaskStep{
- let task1 = new AgentTaskStep({title:"导诊:根据患者描述导诊对应科室",shareData:options.shareData})
- task1.handle = ()=>{
- return new Promise(async (resolve,reject)=>{
- // 获取用户输入的诗词
- let userInput = await getUserInput(options.modalCtrl,{fieldsArray:[
- {name:"症状口述",type:"text",desc:"描述下感觉到的症状或不适。"}
- ]});
- if(!userInput?.['症状口述']){
- task1.error = "无症状口述,无法判断科室"
- resolve(false);
- }
- // 文本生成
- let PromptTemplate = `您是一名专业的医护人员,在门诊大厅负责导诊服务,请您根据患者的症状口述,为其选择合适的科室进行挂号。
- 患者症状口述:${userInput['症状口述']}
- 结果以JSON格式表示:
- 症状名称为具体的症状,症状描述为用户的感受,持续时间若没有直接说,可以写近期即可。
- {
- "keshi":"科室名称",
- "sympList":[
- {"title":"症状名称","desc":"症状描述","duration":"持续时间"}
- ]
- }
- `
- let completion = new FmodeChatCompletion([
- {role:"system",content:""},
- {role:"user",content:PromptTemplate}
- ])
- completion.sendCompletion().subscribe((message:any)=>{
- if(task1.progress < 0.5){
- task1.progress += 0.1
- }
- if(task1.progress >= 0.5 && task1.progress <= 0.9){
- task1.progress += 0.01
- }
- if(task1.progress >= 0.9){
- task1.progress += 0.001
- }
- // 打印消息体
- console.log(message.content)
- // 赋值消息内容给组件内属性
- if(message.complete){ // 判断message为完成状态,则设置isComplete为完成
- options.shareData.userStory = extactAndParseJsonFromString(message.content)
- options.shareData.userStory['症状口述'] = userInput['症状口述']
- task1.progress = 1
- resolve(true)
- }
- })
- })
- }
- return task1
- }
|