I turned Jev into a (lousy) chatbot
Recorded: Sept. 20, 2026, 6:09 p.m.
| Original | Summarized |
GitHub - kyle-pena-nlp/jevchat: Turns Jev into a chatbot · GitHub Skip to content Navigation MenuSign inAppearance settingsPlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub Copilot appDirect agents from issue to mergeMCP RegistryIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesCode QualityEnforce quality at mergeAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricingSearch/Sign inSign upAppearance settings You signed in with another tab or window. Reload to refresh your session. Dismiss alert kyle-pena-nlp jevchat Public
Notifications
Fork
Star Code Issues Pull requests Actions Projects Security and quality Insights
Additional navigation options
Code Issues Pull requests Actions Projects Security and quality Insights
mainBranchesTagsGo to fileCodeOpen more actions menuLatest commit History8 Commits8 CommitsFolders and filesNameNameLast commit messageLast commit datedocsdocs jevchatjevchat teststests toolstools .gitignore.gitignore README.mdREADME.md jevchat.tomljevchat.toml poetry.lockpoetry.lock pyproject.tomlpyproject.toml View all filesRepository files navigationREADMEMore itemsjevchat Given the user's question and the reply written so far, which symbol comes next? The options are an alphabet plus an option to stop emitting. Jev returns a probability for each This was a Claude accelerated experiment. I described the sampling algorithms, strategies, and so on, and it implemented them. JEV_API_KEY and TYPESAFE_API_KEY are also accepted. Values in .env win over # ...without the re-ordering that cancels Jev's position bias (worst mode) # ...averaging 4 re-orderings, sent as 4 parallel questions in one request # bisect — earlier/later down to groups of 20, each split asked both ways # ...cheaper: bigger groups, each split asked once # buckets — the alphabet split across many questions, each with an OTHER escape. # refine — buckets, then a question over the winners, then a rescored nucleus. # symbol — options are the bare symbols, as the first version of this did # these three exceed 255 options, so they need --strategy buckets symbol options: 'a' 'i' 's' … STOP The append is already done, so Jev only ranks finished strings — which is what a Footer © 2026 GitHub, Inc. Footer navigation Terms Privacy Security Status Community Docs Contact Manage cookies Do not share my personal information You can’t perform that action at this time. |
The project jevchat transforms the Jev model into an interactive chatbot by employing sophisticated sampling algorithms and presentation strategies to explore the model's behavior. The core mechanism involves repeatedly querying Jev based on the current user question and partial reply to determine the next symbol, which is drawn from a probability distribution. This process allows for experimentation with various sampling strategies, alphabet constraints, and presentation formats to observe and manipulate the model's generation process. The setup requires installing dependencies and configuring an API key, which can be provided via Jev_API_KEY or TYPESAFE_API_KEY, with environment variables taking precedence. The system supports interactive chat commands and specific modes for testing, such as asking for alphabets or benchmarking different methods. The project defines several advanced sampling strategies that govern how the next symbol is selected. These strategies include choice, which asks a single question over the entire alphabet, and bisect, which sorts the alphabet and asks yes or no questions to narrow down the set before asking a choice question within the resulting group. Bucket strategies divide the alphabet across multiple questions, and the refine strategy further refines the probability distribution through successive questions and nucleus scoring, which can resolve a large vocabulary space. The system also supports various alphabet constraints, allowing users to restrict the sampling space, such as using lower26 for letters or ascii for any character, or token-based constraints like tokens or bpe5k for word or subword sequences. Combining these constraints with strategies, such as using the bisect strategy with specified cutoffs, demonstrates complex control over the generation distribution. Presentations are also controlled via two main methods: hypothesis and symbol. The hypothesis method presents the resulting text strings, allowing the model to judge grammar and spelling on the concatenated options. In contrast, the symbol method presents only the individual symbols, requiring the model to internally append the option before judging. The authors note that presenting the full text hypothesis offers a significant improvement, roughly tripling the probability mass landing on the correct symbol for fewer input tokens compared to presenting symbol options with their descriptions. Beam search is implemented as an alternative generation method, allowing the system to keep several candidate replies alive instead of committing to a single symbol at each step, ranking them by probability rather than drawing exclusively from the distribution. The system also includes command functions for managing the session, such as asking for help, resetting, and displaying statistics. The testing infrastructure includes a scripted client for the generation loop and a mock transport layer to facilitate offline testing of the generation and API interaction. |