Spaces:
Sleeping
Sleeping
import { generateText } from 'ai'; | |
import {getModel} from "../config"; | |
import { GoogleGenerativeAIProviderMetadata } from '@ai-sdk/google'; | |
import {TokenTracker} from "../utils/token-tracker"; | |
const model = getModel('searchGrounding') | |
export async function grounding(query: string, tracker?: TokenTracker): Promise<string> { | |
try { | |
const { text, experimental_providerMetadata, usage } = await generateText({ | |
model, | |
prompt: | |
`Current date is ${new Date().toISOString()}. Find the latest answer to the following question: | |
<query> | |
${query} | |
</query> | |
Must include the date and time of the latest answer.`, | |
}); | |
const metadata = experimental_providerMetadata?.google as | |
| GoogleGenerativeAIProviderMetadata | |
| undefined; | |
const groundingMetadata = metadata?.groundingMetadata; | |
// Extract and concatenate all groundingSupport text into a single line | |
const groundedText = groundingMetadata?.groundingSupports | |
?.map(support => support.segment.text) | |
.join(' ') || ''; | |
(tracker || new TokenTracker()).trackUsage('grounding', usage); | |
console.log('Grounding:', {text, groundedText}); | |
return text + '|' + groundedText; | |
} catch (error) { | |
console.error('Error in search:', error); | |
throw error; | |
} | |
} |