Add ROBERTA classifier ranking PoC, with 77pc off the bat

This commit is contained in:
William Jeynes
2026-03-13 11:24:51 +00:00
parent f09e36e740
commit 8311556855
8 changed files with 85 additions and 32 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ import { MessagesState } from "../state";
import { BaseMessage } from "@langchain/core/messages";
//TODO: Each of these might need different weights
const keys = ["CONFIDENCE", "RAGAS", "RELATION"];
const keys = ["CONFIDENCE", "RELATION", "RAGAS", "ROBERTA"];
const mapping = {
VERYHIGH: 1.0,
@@ -16,7 +16,7 @@ const mapping = {
type Priority = keyof typeof mapping;
function mapResponse(value: string | undefined | null): number {
if (!value) return 0;
if (!value) return 1;
const trimmed = value.trim();
const num = parseFloat(trimmed);
+14
View File
@@ -0,0 +1,14 @@
import { GraphNode } from "@langchain/langgraph";
import { MessagesState } from "../state";
import { AIMessage } from "@langchain/core/messages";
import { evaluateWithRoberta } from "../tools/robertaCall";
export const robertaMetrics: GraphNode<typeof MessagesState> = async (state) => {
const answer = state.proposedTriggerEvent[state.proposedTriggerEventIndex].Event
const result = await evaluateWithRoberta({answer})
return {
messages: [ new AIMessage("ROBERTA:" + result)]
};
};
+22
View File
@@ -0,0 +1,22 @@
import axios from "axios";
export async function evaluateWithRoberta({
answer
}: {
answer: string;
}) {
const res = await axios.post("http://localhost:8000/evaluate", {
answer
});
// console.log(res.data)
const validProb = res.data["probabilities"][0][0]
const invalidProv = res.data["probabilities"][0][1]
return validProb > invalidProv ? 1 : 0;
}
// let res = await evaluateWithRoberta({answer: "High-profile political downplaying of COVID-19 (examples: President Trump saying 'it will go away' in MarchAugust 2020)"});
// console.log(res)
// res = await evaluateWithRoberta({answer: "Multiple mirrored reuploads (20202023) put the clip on other channels with titles implying it was a genuine 1970s public information film."});
// console.log(res)
+13 -9
View File
@@ -6,6 +6,7 @@ import { produceRanking } from "./nodes/produceRanking";
import { createModelNode } from "./nodes/model";
import { loopEndConditional } from "./conditionals/loop_end";
import { sort } from "./nodes/sort";
import { robertaMetrics } from "./nodes/robertaMetrics";
const verificationModel = createModelNode([], "verify.txt");
const relationModel = createModelNode([], "relation.txt");
@@ -14,21 +15,24 @@ const agent = new StateGraph(MessagesState)
//NODES
.addNode(verificationSetup.name, verificationSetup)
.addNode("verificationModel", verificationModel)
.addNode(ragasMetrics.name, ragasMetrics)
.addNode("relationModel", relationModel)
// .addNode("verificationModel", verificationModel)
// .addNode(ragasMetrics.name, ragasMetrics)
.addNode(robertaMetrics.name, robertaMetrics)
// .addNode("relationModel", relationModel)
.addNode(produceRanking.name, produceRanking)
.addNode(sort.name, sort)
.addEdge(START, verificationSetup.name)
.addEdge(verificationSetup.name, "verificationModel")
.addEdge(verificationSetup.name, ragasMetrics.name)
.addEdge(verificationSetup.name, "relationModel")
// .addEdge(verificationSetup.name, "verificationModel")
// .addEdge(verificationSetup.name, ragasMetrics.name)
.addEdge(verificationSetup.name, robertaMetrics.name)
// .addEdge(verificationSetup.name, "relationModel")
.addEdge(ragasMetrics.name, produceRanking.name)
.addEdge("verificationModel", produceRanking.name)
.addEdge("relationModel", produceRanking.name)
// .addEdge(ragasMetrics.name, produceRanking.name)
.addEdge(robertaMetrics.name, produceRanking.name)
// .addEdge("verificationModel", produceRanking.name)
// .addEdge("relationModel", produceRanking.name)
// @ts-expect-error
.addConditionalEdges(produceRanking.name, loopEndConditional, [verificationSetup.name, sort.name])