UNPKG

deepsearcher

Version:

DeepResearch Agent with LangGraph, use any llm and web search to build your own deep research agent

400 lines (394 loc) 26.6 kB
import * as zod_v4_core from 'zod/v4/core'; import * as zod from 'zod'; import { z } from 'zod'; import * as _langchain_langgraph from '@langchain/langgraph'; import * as _langchain_core_messages from '@langchain/core/messages'; import { ClientOptions } from '@langchain/openai'; export { AIMessage, BaseMessage, HumanMessage, SystemMessage } from 'langchain'; declare const ResearchState: _langchain_langgraph.AnnotationRoot<{ query: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; id: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; loopIndex: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>; interface SearchResultItem { id: string | number; title: string; content: string; source?: string; url?: string; date?: string; score?: number; } type SearcherFunction = (input: typeof ResearchState.State) => Promise<SearchResultItem[]>; declare enum NodeEnum { GenerateQuery = "generate_query", Research = "research", Reflection = "reflection", FinalizeAnswer = "finalize_answer" } declare enum EventStreamEnum { ChatModelStart = "on_chat_model_start", ChatModelStream = "on_chat_model_stream", ChatModelEnd = "on_chat_model_end" } interface DeepResearchOptions extends ClientOptions { type?: 'openai' | 'anthropic' | 'gemini' | 'vertexai'; systemPrompt?: string; temperature?: number; enableCitationUrl?: boolean; } declare class DeepResearch { private readonly options?; private readonly searcher; constructor({ searcher, options, }: { searcher: SearcherFunction; options?: DeepResearchOptions; }); compile(): Promise<_langchain_langgraph.CompiledStateGraph<{ messages: _langchain_core_messages.BaseMessageLike[]; rationale: string; generatedQueries: string[]; searchedQueries: string[]; researchResult: string[]; sourcesGathered: SearchResultItem[]; researchLoopCount: number; reflectionState: _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>; }, { messages?: _langchain_core_messages.BaseMessageLike[] | undefined; rationale?: string | undefined; generatedQueries?: string[] | undefined; searchedQueries?: string[] | undefined; researchResult?: string[] | undefined; sourcesGathered?: SearchResultItem[] | undefined; researchLoopCount?: number | undefined; reflectionState?: _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }> | undefined; }, "__start__", { messages: _langchain_langgraph.BinaryOperatorAggregate<_langchain_core_messages.BaseMessageLike[], _langchain_core_messages.BaseMessageLike[]>; rationale: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; generatedQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; searchedQueries: _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; researchResult: _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; sourcesGathered: _langchain_langgraph.BinaryOperatorAggregate<SearchResultItem[], SearchResultItem[]>; researchLoopCount: _langchain_langgraph.BinaryOperatorAggregate<number, number>; reflectionState: { (): _langchain_langgraph.LastValue<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>; (annotation: _langchain_langgraph.SingleReducer<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>, _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>): _langchain_langgraph.BinaryOperatorAggregate<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>, _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }, { messages: _langchain_langgraph.BinaryOperatorAggregate<_langchain_core_messages.BaseMessageLike[], _langchain_core_messages.BaseMessageLike[]>; rationale: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; generatedQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; searchedQueries: _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; researchResult: _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; sourcesGathered: _langchain_langgraph.BinaryOperatorAggregate<SearchResultItem[], SearchResultItem[]>; researchLoopCount: _langchain_langgraph.BinaryOperatorAggregate<number, number>; reflectionState: { (): _langchain_langgraph.LastValue<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>; (annotation: _langchain_langgraph.SingleReducer<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>, _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>): _langchain_langgraph.BinaryOperatorAggregate<_langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>, _langchain_langgraph.StateType<{ isSufficient: { (): _langchain_langgraph.LastValue<boolean>; (annotation: _langchain_langgraph.SingleReducer<boolean, boolean>): _langchain_langgraph.BinaryOperatorAggregate<boolean, boolean>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; knowledgeGap: { (): _langchain_langgraph.LastValue<string>; (annotation: _langchain_langgraph.SingleReducer<string, string>): _langchain_langgraph.BinaryOperatorAggregate<string, string>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; followUpQueries: { (): _langchain_langgraph.LastValue<string[]>; (annotation: _langchain_langgraph.SingleReducer<string[], string[]>): _langchain_langgraph.BinaryOperatorAggregate<string[], string[]>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; numberOfRanQueries: { (): _langchain_langgraph.LastValue<number>; (annotation: _langchain_langgraph.SingleReducer<number, number>): _langchain_langgraph.BinaryOperatorAggregate<number, number>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }>>; Root: <S extends _langchain_langgraph.StateDefinition>(sd: S) => _langchain_langgraph.AnnotationRoot<S>; }; }, zod.ZodObject<{ queryGeneratorModel: zod.ZodString; reflectionModel: zod.ZodString; answerModel: zod.ZodString; numberOfInitialQueries: zod.ZodNumber; maxResearchLoops: zod.ZodNumber; }, zod_v4_core.$strip>, unknown, unknown, unknown>>; private generateQuery; private continueToSearch; private research; private reflection; private evaluateResearch; private finalizeAnswer; private createClient; } declare const ConfigurationSchema: z.ZodObject<{ queryGeneratorModel: z.ZodString; reflectionModel: z.ZodString; answerModel: z.ZodString; numberOfInitialQueries: z.ZodNumber; maxResearchLoops: z.ZodNumber; }, z.core.$strip>; type Configuration = z.infer<typeof ConfigurationSchema>; export { type Configuration, DeepResearch, type DeepResearchOptions, EventStreamEnum, NodeEnum, type SearchResultItem, type SearcherFunction };