Welcome to Hypermind the .NET way of building minds.
Connect foundation models to enable emergent capabilities - with ease
Add reference to HypermindLib Set the Enivormentvariable OPENAI_API_KEY to your OpenAI API Key or provide Key directly in Code Example Code:
- Recursive Summarizer - simply summarize a complete book
- Caching for LLMs implemented
usingHypermindLib;//Ask a LLM a question that it directly without help awnsers.varaskLLm=newAskLLM(newOpenAI());varsite=askLLm.Ask("What is the Url of the Wikipediasite about the element gold?");Console.WriteLine(site);//get text of an WebsiteWebrequestwebrequest=newWebrequest();vartext=webrequest.Get(site);Console.WriteLine(text);//split a long text prety smartlyvarsplits=Textsplitter.SmartStringSplit(text,4000);//summarize a noveltext=webrequest.Get("https://www.gutenberg.org/cache/epub/69773/pg69773-images.html");varrecursivSummerizer=newRecursivSummarizer(newOpenAI(maxNewTokens:500));varsummery=recursivSummerizer.Summerize(text);Console.WriteLine(summery);//ask questions about a textvaranswerer=newAnswerQuestionAboutText(newOpenAI());varresult=answerer.AskQuestion("the apple was red and the car yellow","what color was the apple?");Console.WriteLine(result);See the RecursiveSummerizer as inspiration for new chains. Its simple, like lego.
publicclassRecursivSummarizer:Chain{PrompTemplateSummerizerPromp=newPrompTemplate(@"""Summerize the following text between >>> and <<< >>>{text}<<<Summery:""");ModelWithPrompSumerizer;publicRecursivSummarizer(LLMllm){Sumerizer=newModelWithPromp(llm,SummerizerPromp);}/// <summary>/// Simplified Call to Summerizer/// </summary>/// <param name="text">Text we want summerized</param>/// <returns></returns>publicstringSummerize(stringtext){varsplits=Textsplitter.SmartStringSplit(text,8000);if(splits.Length==1){varinput=newChainInput("text",text);varoutput=Sumerizer.Process(input);returnoutput.Result[0].Value;}else{varconcatsummeries=splits.Select(s =>Summerize(s)).Aggregate("",(current,next)=>{returncurrent+" "+next;});varfinamsummary=Summerize(concatsummeries);returnfinamsummary;}}publicoverrideChainOutputProcess(ChainInputinput){returnSumerizer.Process(input);}}
´´´