File size: 1,273 Bytes
0bcc252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
  }
}