I’m new to Temporal, so apologies if I’m getting concepts/terminology wrong.
I’m trying to figure out how to implement this LLM RAG workflow (simplified pseudocode):
// Allow up to 3 searches to generate an answer.
let remainingSearches = 3;
// Start with the user's search query.
let query = args.initialQuery;
let answer = '';
while (remainingSearches > 0) {
remainingSearches--;
// Perform search in an activity
const searchResults = await search(query);
// Call LLM to generate an answer in an activity.
// LLM may decide to do a follow up search by passing back `nextQuery`.
const answerResult = await generateAnswer({query, answer, searchResults});
answer = answerResult.answer;
if (answerResult.nextQuery) {
query = answerResult.nextQuery;
} else {
break;
}
}
await saveAnswer(answer);
What’s the right way to model something like this?
In particular, I’m not sure where to keep workflow state like remainingSearches
, answer
, and query
.