package com.smtaiserver.smtaiserver.javaai.qwen.agent;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
|
import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
|
import com.smtaiserver.smtaiserver.javaai.SMTJavaAIError;
|
import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
|
import com.smtservlet.util.Json;
|
import com.smtservlet.util.SMTJsonWriter;
|
|
public class SMTQwenAgentKnowledgeVector extends SMTQwenAgent
|
{
|
@Override
|
public void initInstance(DBRecord rec) throws Exception
|
{
|
super.initInstance(rec);
|
|
}
|
|
@Override
|
public SMTJavaAIError callAgents(String jsonPath, Json jsonArgs, SMTLLMConnect llm, String question, SMTAIServerRequest tranReq) throws Exception
|
{
|
SMTJsonWriter jsonWrResult = tranReq.getResultJsonWr();
|
|
// 如果当前不是提问,则直接llm回答
|
if(!jsonArgs.safeGetBoolean("is_question", true))
|
{
|
String answer = llm.callWithMessage(null, question, tranReq);
|
jsonWrResult.addKeyValue("json_ok", true);
|
jsonWrResult.addKeyValue("answer_type", "knowledge");
|
jsonWrResult.beginArray("knowledge");
|
{
|
jsonWrResult.beginMap(null);
|
jsonWrResult.addKeyValue("answer", answer);
|
jsonWrResult.endMap();
|
}
|
jsonWrResult.endArray();
|
return null;
|
}
|
|
jsonWrResult.addKeyValue("answer_type", "knowledge");
|
jsonWrResult.beginArray("knowledge");
|
{
|
jsonWrResult.beginMap(null);
|
{
|
long tick = System.currentTimeMillis();
|
List<String[]> contexts = new ArrayList<>();
|
String result = llm.callWithVector(question, tranReq.getRawQuestion(), null, 90, tranReq, contexts);
|
tranReq.traceLLMDebug("executeCmd_QUERY回答问题:[" + ((double)(System.currentTimeMillis() - tick) / 1000) + "秒] [\n" + result + "\n]");
|
jsonWrResult.addKeyValue("answer", result);
|
jsonWrResult.beginArray("contexts");
|
for(String[] context : contexts)
|
{
|
jsonWrResult.beginMap(null);
|
{
|
jsonWrResult.addKeyValue("page_content", context[1]);
|
jsonWrResult.beginMap("metadata");
|
{
|
jsonWrResult.addKeyValue("Title", context[0]);
|
}
|
jsonWrResult.endMap();
|
}
|
jsonWrResult.endMap();
|
}
|
jsonWrResult.endArray();
|
}
|
jsonWrResult.endMap();
|
}
|
jsonWrResult.endArray();
|
|
return null;
|
}
|
|
}
|