feat(prompt): Use date, not time in prompts
This commit is contained in:
parent
4edd173207
commit
8e6934bb64
12 changed files with 34 additions and 18 deletions
|
|
@ -8,6 +8,7 @@ import formatChatHistoryAsString from '../utils/formatHistory';
|
|||
import { BaseMessage } from '@langchain/core/messages';
|
||||
import LineOutputParser from '../outputParsers/lineOutputParser';
|
||||
import { searchSearxng } from '../searxng';
|
||||
import { formatDateForLLM } from '../utils';
|
||||
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
||||
|
||||
const imageSearchChainPrompt = `
|
||||
|
|
@ -23,7 +24,7 @@ const imageSearchChainPrompt = `
|
|||
- The history is contained in the <conversation> tag after the <examples> below
|
||||
- The user question is contained in the <question> tag after the <examples> below
|
||||
- Output your answer in an <answer> tag
|
||||
- Current date & time in ISO format (UTC timezone) is: {date}
|
||||
- Current date is: {date}
|
||||
- Do not include any other text in your answer
|
||||
|
||||
<examples>
|
||||
|
|
@ -99,7 +100,7 @@ const createImageSearchChain = (llm: BaseChatModel) => {
|
|||
query: (input: ImageSearchChainInput) => {
|
||||
return input.query;
|
||||
},
|
||||
date: () => new Date().toISOString(),
|
||||
date: () => formatDateForLLM(),
|
||||
}),
|
||||
PromptTemplate.fromTemplate(imageSearchChainPrompt),
|
||||
llm,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import formatChatHistoryAsString from '../utils/formatHistory';
|
|||
import { BaseMessage } from '@langchain/core/messages';
|
||||
import LineOutputParser from '../outputParsers/lineOutputParser';
|
||||
import { searchSearxng } from '../searxng';
|
||||
import { formatDateForLLM } from '../utils';
|
||||
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
||||
|
||||
const VideoSearchChainPrompt = `
|
||||
|
|
@ -23,7 +24,7 @@ const VideoSearchChainPrompt = `
|
|||
- The history is contained in the <conversation> tag after the <examples> below
|
||||
- The user question is contained in the <question> tag after the <examples> below
|
||||
- Output your answer in an <answer> tag
|
||||
- Current date & time in ISO format (UTC timezone) is: {date}
|
||||
- Current date is: {date}
|
||||
- Do not include any other text in your answer
|
||||
|
||||
<examples>
|
||||
|
|
@ -100,7 +101,7 @@ const createVideoSearchChain = (llm: BaseChatModel) => {
|
|||
query: (input: VideoSearchChainInput) => {
|
||||
return input.query;
|
||||
},
|
||||
date: () => new Date().toISOString(),
|
||||
date: () => formatDateForLLM(),
|
||||
}),
|
||||
PromptTemplate.fromTemplate(VideoSearchChainPrompt),
|
||||
llm,
|
||||
|
|
|
|||
|
|
@ -65,5 +65,5 @@ export const academicSearchResponsePrompt = `
|
|||
{context}
|
||||
</context>
|
||||
|
||||
Current date & time in ISO format (UTC timezone) is: {date}.
|
||||
Current date is: {date}.
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -65,5 +65,5 @@ export const redditSearchResponsePrompt = `
|
|||
{context}
|
||||
</context>
|
||||
|
||||
Current date & time in ISO format (UTC timezone) is: {date}.
|
||||
Current date is: {date}.
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ export const webSearchRetrieverPrompt = `
|
|||
- The history is contained in the <conversation> tag after the <examples> below
|
||||
- The user question is contained in the <question> tag after the <examples> below
|
||||
- You must always return the rephrased question inside an <answer> XML block, if there are no links in the follow-up question then don't insert a <links> XML block in your response
|
||||
- Current date & time in ISO format (UTC timezone) is: {date}
|
||||
- Current date is: {date}
|
||||
- Do not include any other text in your answer
|
||||
|
||||
There are several examples attached for your reference inside the below examples XML block
|
||||
|
|
@ -212,5 +212,5 @@ export const webSearchResponsePrompt = `
|
|||
{context}
|
||||
</context>
|
||||
|
||||
Current date & time in ISO format (UTC timezone) is: {date}.
|
||||
Current date is: {date}.
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -65,5 +65,5 @@ export const wolframAlphaSearchResponsePrompt = `
|
|||
{context}
|
||||
</context>
|
||||
|
||||
Current date & time in ISO format (UTC timezone) is: {date}.
|
||||
Current date is: {date}.
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -65,5 +65,5 @@ export const youtubeSearchResponsePrompt = `
|
|||
{context}
|
||||
</context>
|
||||
|
||||
Current date & time in ISO format (UTC timezone) is: {date}.
|
||||
Current date is: {date}.
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import {
|
|||
} from '../utils/documents';
|
||||
import formatChatHistoryAsString from '../utils/formatHistory';
|
||||
import { getModelName } from '../utils/modelUtils';
|
||||
import { formatDateForLLM } from '../utils';
|
||||
|
||||
export interface MetaSearchAgentType {
|
||||
searchAndAnswer: (
|
||||
|
|
@ -309,7 +310,7 @@ class MetaSearchAgent implements MetaSearchAgentType {
|
|||
systemInstructions: () => systemInstructions,
|
||||
query: (input: BasicChainInput) => input.query,
|
||||
chat_history: (input: BasicChainInput) => input.chat_history,
|
||||
date: () => new Date().toISOString(),
|
||||
date: () => formatDateForLLM(),
|
||||
context: RunnableLambda.from(
|
||||
async (
|
||||
input: BasicChainInput,
|
||||
|
|
@ -331,7 +332,7 @@ class MetaSearchAgent implements MetaSearchAgentType {
|
|||
if (this.config.searchWeb) {
|
||||
const searchRetrieverChain =
|
||||
await this.createSearchRetrieverChain(llm, emitter);
|
||||
var date = new Date().toISOString();
|
||||
var date = formatDateForLLM();
|
||||
|
||||
const searchRetrieverResult = await searchRetrieverChain.invoke(
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,3 +25,16 @@ export const formatTimeDifference = (
|
|||
else
|
||||
return `${Math.floor(diffInSeconds / 31536000)} year${Math.floor(diffInSeconds / 31536000) !== 1 ? 's' : ''}`;
|
||||
};
|
||||
|
||||
/**
|
||||
* Format a date for LLM prompts to only include month, day, and year
|
||||
* @param date - The date to format (defaults to current date)
|
||||
* @returns Formatted date string in "Month DD, YYYY" format
|
||||
*/
|
||||
export const formatDateForLLM = (date: Date = new Date()): string => {
|
||||
return date.toLocaleDateString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
});
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue