diff --git a/MyApp.ServiceInterface/Data/AppConfig.cs b/MyApp.ServiceInterface/Data/AppConfig.cs index ee90366..7454ae1 100644 --- a/MyApp.ServiceInterface/Data/AppConfig.cs +++ b/MyApp.ServiceInterface/Data/AppConfig.cs @@ -1,6 +1,5 @@ using System.Collections.Concurrent; using System.Data; -using Microsoft.EntityFrameworkCore.Metadata.Internal; using MyApp.ServiceModel; using ServiceStack.OrmLite; @@ -27,10 +26,11 @@ public static (string Model, int Questions)[] ModelsForQuestions = ("gemma", 3), ("mixtral", 5), ("gemini-pro", 10), - ("deepseek-coder:33b", 25), - ("claude-3-sonnet-20240229", 50), - ("gpt-4-turbo-preview", 75), - ("claude-3-opus-20240229", 100), + ("claude-3-haiku", 25), + ("deepseek-coder:33b", 50), + ("claude-3-sonnet", 75), + ("gpt-4-turbo", 100), + ("claude-3-opus", 200), #else ("phi", 0), ("gemma:2b", 0), @@ -41,10 +41,11 @@ public static (string Model, int Questions)[] ModelsForQuestions = ("gemma", 3), ("mixtral", 5), // ("gemini-pro", 10), - // ("deepseek-coder:33b", 25), - // ("claude-3-sonnet-20240229", 50), - // ("gpt-4-turbo-preview", 75), - // ("claude-3-opus-20240229", 100), + // ("claude-3-haiku", 25), + // ("deepseek-coder:33b", 50), + // ("claude-3-sonnet", 75), + // ("gpt-4-turbo", 100), + // ("claude-3-opus", 200), #endif ]; diff --git a/MyApp/_pages/about.md b/MyApp/_pages/about.md index a65e98e..23bda62 100644 --- a/MyApp/_pages/about.md +++ b/MyApp/_pages/about.md @@ -1,20 +1,89 @@ --- -title: About this Blazor App +title: About pvq --- -## .NET 8 Blazor App Templates - -ServiceStack's new .NET 8 Blazor templates enhances the default ASP.NET Blazor App templates with several modern, high-productivity features, including: - - - [Vue.js](https://vuejs.org) - Enhance your statically rendered Blazor Apps with Vue.js for all your interactive UIs - - [Tailwind CSS](https://tailwindcss.com) - Style your Blazor Apps with the modern popular utility-first CSS framework for creating beautiful, maintainable responsive UIs with DarkMode support - - [ServiceStack Vue Components](https://blazor-gallery.jamstacks.net) - Rapidly develop beautiful Blazor Apps integrated with Rich high-productivity UI Tailwind Components like [AutoQueryGrid](https://docs.servicestack.net/vue/autoquerygrid) and [AutoForms](https://docs.servicestack.net/vue/autoform) - - [ServiceStack.Blazor Components](https://blazor-gallery.jamstacks.net) - Utilize ServiceStack.Blazor's beautiful Tailwind Components in your statically rendered Blazor Apps - - [ASP .NET Identity Auth](https://learn.microsoft.com/en-us/aspnet/core/blazor/security/) - Use the same ASP .NET Identity Auth used in ASP.NET's .NET 8 Blazor Apps, with all Identity Pages upgraded with beautiful Tailwind CSS styling - - [Entity Framework](https://learn.microsoft.com/ef/) & [OrmLite](https://docs.servicestack.net/ormlite/) - Choose the Best ORM to build each App feature, with a unified solution that sees [OrmLite's Code-First DB Migrations](https://docs.servicestack.net/ormlite/db-migrations) run both EF and OrmLite migrations, inc. Seed Data with a single command at Development or Deployment - - [AutoQuery](https://docs.servicestack.net/autoquery/) - Rapidly developing data-driven APIs, UIs and CRUD Apps - - [Auto Admin Pages](https://youtu.be/wlRA4_owEsc) - Quickly develop your back-office CRUD Admin UIs to manage your App's Database tables at [/admin](/admin) - - [Markdown](https://docs.servicestack.net/razor-press/syntax) - Maintain SEO-friendly documentation and content-rich pages like this one with just Markdown, beautifully styled with [@tailwindcss/typography](https://tailwindcss.com/docs/typography-plugin) - - [Built-in UIs](https://servicestack.net/auto-ui) - Use ServiceStack's Auto UIs to [Explore your APIs](https://docs.servicestack.net/api-explorer) at [/ui](/ui/) - or Query your [App's Database Tables](https://docs.servicestack.net/admin-ui-database) at [/admin-ui/database](/admin-ui/database) - - [Built-in Docker Deployments](/deploy) - Use the built-in GitHub Actions to effortlessly deploy .NET 8 containerized Blazor Apps with Docker and GitHub Registry via SSH to any Linux Server \ No newline at end of file +## Getting Help in the Age of LLMs + +Like most developers we're captivated by the amazing things large language models are capable of and the potential they +have to transform the way we interact with and use technology. One of the areas they can be immediately beneficial with +is in getting help in learning how to accomplish a task or solving a particular issue. + +Previously we would need to seek out answers by scanning the Internet, reading through documentation and blogs to find +out answers for ourselves. Forums and particularly Stack Overflow have been a great resource for developers in being able +to get help from other developers who have faced similar issues. But the timeliness and quality of the responses can vary +based on the popularity of the question and the expertise of the person answering. Answers may also not be 100% relevant +to our specific situation, potentially requiring reading through multiple answers from multiple questions to get the help +we want. + +But now, with the advent of large language models, we can get help in a more natural way by simply asking a question in +plain English and getting an immediate response that is tailored to our specific needs. + +## Person vs Question + +[pvq.app](https://pvq.app) is our attempt at providing a useful platform for other developers in this new age by enlisting +the help of large language models to provide immediate and relevant answers to your questions. But instead of just using +a single LLM to provide answers, we're using multiple models to provide different perspectives on the same question that +we'll use to analyze the strengths of different LLMs at answering different types of questions. + +## Initial Base Line + +For our initial dataset we're starting with the top 100k questions from StackOverflow and running them through a number +of quality Open LLMs that we've found to perform great for answering programming questions: + +- [Phi-2](https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/) (2.7B) by Microsoft +- [Gemma 2B](https://ai.google.dev/gemma) (2B) by Google +- [Qwen 1.5](https://github.com/QwenLM/Qwen1.5) (4B) by Qwen Team +- [DeepSeek Coder 6.7B](https://github.com/QwenLM/Qwen1.5) (6.7B) by DeepSeek AI +- [Code Llama2 7B](https://llama.meta.com/llama2/) (7B) by Meta +- [Gemma 7B](https://ai.google.dev/gemma) (7B) by Google +- [Mistral 7B](https://mistral.ai/news/announcing-mistral-7b/) (7B) by Mistral AI +- [Mixtral 8x7B](https://mistral.ai/news/mixtral-of-experts/) (8x7B) by Mistral AI +- [DeepSeek Coder 33B](https://deepseekcoder.github.io/) (33B) by DeepSeek AI + +Our initial pass will be to see how well each of these models perform on the StackOverflow dataset which we'll keep track +of and publish on our [Leaderboard](/leaderboard) page which we're also comparing against the highest voted and +accepted answers on StackOverflow to see how well they measure up against the best human answers. + +## Future Work + +After establishing the initial base line we'll look towards evaluating different strategies and specialized models to +see if we're able to improve the quality of answers that can be provided. + +## New Questions + +For new questions asked we'll also include access to the best performing proprietary models to active users as they +[ask more questions](/questions/ask), including: + +- [Claude 3 Haiku](https://www.anthropic.com/news/claude-3-haiku) by Anthropic +- [Gemini Pro](https://blog.google/technology/ai/google-gemini-ai/) by Google +- [Claude 3 Sonnet](https://www.anthropic.com/news/claude-3-family) by Anthropic +- [GPT 4 Turbo](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo) by OpenAI +- [Claude 3 Opus](https://www.anthropic.com/claude) by Anthropic + +## Open Questions and Answers for all + +All questions, answers and comments is publicly available for everyone to freely use under the same +[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license used by StackOverflow. + +## Help us improve Answers + +You can help us improve the quality of answers by providing any kind of feedback including asking new questions, +up voting good answers and down voting bad ones, correcting answers with inaccuracies or leaving comments suggesting +improvements or adding additional context and clarifications to answers. Our most active users who help curate and improve +the quality of questions and answers will have the opportunity to become moderators where they'll have access to +all our models. + +We also welcome attempts to beat the large language models by providing your own answers to questions. We'll rank +new answers and include votes they receive from the community to determine the best answers. + +We'll use this feedback to update our leaderboard and improve the quality of answers provided. + +## Feedback ❤️ + +We're still in the very early stages of development and would love to hear your feedback on how we can improve pvq.app +to become a better platform for answering technical questions. You can provide feedback in our +[GitHub Discussions](https://github.com/ServiceStack/pvq/discussions): + + - [Feature Requests](https://github.com/ServiceStack/pvq/discussions/categories/ideas) + - [Report Issues](https://github.com/ServiceStack/pvq/issues) + - [General Feedback](https://github.com/ServiceStack/pvq/discussions) diff --git a/MyApp/_posts/2024-03-01_vite-press-plugin.md b/MyApp/_posts/2024-03-01_vite-press-plugin.md deleted file mode 100644 index 897850d..0000000 --- a/MyApp/_posts/2024-03-01_vite-press-plugin.md +++ /dev/null @@ -1,540 +0,0 @@ ---- -title: Vite Press Plugin -summary: Introducing the Vite Press Plugin for Vite Vue & React Apps -author: Lucy Bates -tags: [docs, markdown] -image: https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000 -draft: true ---- - -The Vite Press Plugin is an alternative to [VitePress](https://vitepress.dev) for adding Markdown features -to existing Vite Vue or React projects. It's a non-intrusive plugin for Vue and React Vite apps that want to -add markdown powered content features without needing to adopt an opinionated framework for their entire App. - -## Universal Markdown Features - -A goal for **vite-press-plugin** is to implement a suite of universal markdown-powered features that can be reused across -Vue, React and .NET Razor and Blazor projects, allowing you to incorporate same set of markdown feature -folders to power markdown content features across a range of websites built with different technologies. - -### Vite Apps with vite-press-plugin - -The **vite-press-plugin** currently powers the markdown features in the static Vite Vue and React templates which are -ideal for creating static websites, blogs, documentation and marketing websites that can be hosted FREE on [GitHub Pages CDN](https://pages.github.com): - -#### Static Vite Templates with vite-press-plugin - -- [press-vue](https://press-vue.servicestack.net) - Vite Vue App -- [press-react](https://press-react.servicestack.net) - Vite React App - -
- - -
press-vue.servicestack.net
-
- - -
press-react.servicestack.net
-
-
- -The **vite-press-plugin** makes the Markdown features available to the Vite App, whilst the markdown rendering itself is optimally -implemented in: - -- Vue Templates - with [markdown-it](https://github.com/markdown-it/markdown-it) in [Vue SFC](https://vuejs.org/guide/scaling-up/sfc.html) Components -- React Templates - with [remark](https://github.com/remarkjs/remark) and [MDX](https://mdxjs.com) in [React](https://react.dev) Components - -#### .NET 8 API backend with Vite Vue & React SPA frontend - -When more capabilities are required and you want a .NET API backend to your Vite Vue or React SPA frontend, -you can use one of our integrated .NET 8 SPA templates: - - - [vue-spa](https://vue-spa.web-templates.io) - .NET 8 API with Vite Vue SPA frontend - - [react-spa](https://react-spa.web-templates.io) - .NET 8 API with Vite React SPA frontend - -
- - -
vue-spa.web-templates.io
-
- - -
react-spa.web-templates.io
-
-
- -### .NET Templates with C# and Markdig - -Whilst the same Markdown feature folders are [implemented in C#](https://razor-ssg.web-templates.io/posts/razor-ssg) -and rendered with [Markdig](https://github.com/xoofx/markdig) and either Razor Pages or Blazor Components: - -#### .NET 8 Razor SSG and Blazor SSR Templates - - - [razor-ssg](https://razor-ssg.web-templates.io) - .NET Razor SSG Blog and Marketing Website with **Markdig** - - [razor-press](https://razor-press.web-templates.io) - .NET Razor SSG Documentation Website with **Markdig** - - [blazor-vue](https://blazor-vue.web-templates.io) - .NET 8 Blazor Server Rendered Website with **Markdig** - -
- - -
razor-ssg.web-templates.io
-
- - -
blazor-vue.web-templates.io
-
-
- -### Markdown Feature Folders - -The content for each Markdown feature is maintained within its own feature folder with a `_` prefix: - -```files -/_includes -/_posts -/_videos -/_whatsnew -``` - -#### Markdown Document Structure - -Additional metadata for each markdown page is maintained in the frontmatter of each markdown page, e.g. -the front matter for this blog post contains: - -```md ---- -title: Vite Press Plugin -summary: Introducing the Vite Press Plugin -author: Lucy Bates -tags: [docs,markdown] -image: https://source.unsplash.com/random/2000x1000/?stationary ---- -``` - -The frontmatter is used in combination with file attributes to populate the document metadata. -The schema used to support the current markdown features include: - -```ts -type Doc = { - title: string // title of Markdown page (frontmatter) - slug: string // slug to page (populated) - path: string // path to page (populated) - fileName: string // filename of markdown file (populated) - content: string // markdown content (populated) - date: string // date of page (frontmatter) - tags: string[] // related tags (frontmatter) - order?: number // explicit page ordering (frontmatter) - group?: string // which group page belongs to (populated) - draft?: boolean // make visible in production (frontmatter) - wordCount: number // (populated) - lineCount: number // (populated) - minutesToRead: number // (populated) -} - -type Post = Doc & { - summary: string // short summary of blog post (frontmatter) - author: string // author of blog post (frontmatter) - image: string // hero image of blog post (frontmatter) -} - -type Video = Doc & { - url: string // URL of YouTube Video -} - -type WhatsNew = Doc & { - url: string // URL of YouTube Video - image: string // Image to display for feature -} -``` - -Markdown files can contain additional frontmatter which is also merged with the document metadata. - -### Accessing Markdown Metadata - -In Vue App's the Metadata is available as an injected dependency that's navigable with the typed `VirtualPress` schema, e.g: - -```ts -import type { VirtualPress } from "vite-plugin-press" - -const press:VirtualPress = inject('press')! -``` - -In React App's it's available via an injected context: - -```ts -import { PressContext } from "@/contexts" - -const press = useContext(PressContext) -``` - -Which is defined as: - -```ts -import { createContext } from 'react' -import type { VirtualPress } from 'vite-plugin-press' - -export const PressContext = createContext({} as VirtualPress) -``` - -This `VirtualPress` metadata is used to power all markdown features. - -### Blog - -The blog maintains its markdown posts in a flat [/_posts](https://github.com/NetCoreTemplates/vue-spa/tree/main/MyApp.Client/src/_posts) -folder which each Markdown post containing its publish date and URL slug it should be published under, e.g: - -```files -/_posts - 2023-01-21_start.md - 2024-02-11_jwt-identity-auth.md - 2024-03-01_vite-press-plugin.md -``` - -Supporting all Blog features requires several different pages to render each of its view: - -| Description | Example | Vue | React | -| - | - | - | - | -| Main Blog layout | [/blog](/blog) | [blog.vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/blog.vue) | [blog.tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/blog.tsx) | -| Navigable Archive of Posts | [/posts](/posts) | [index.vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/posts/index.vue) | [index.tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/posts/index.tsx) | -| Individual Blog Post (like this!) | [/posts/vite-press-plugin](/posts/vite-press-plugin) | [\[slug\].vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/posts/%5Bslug%5D.vue) | [\[slug\].tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/posts/%5Bslug%5D.tsx) | -| Display Posts by Author | [/posts/author/lucy-bates](/posts/author/lucy-bates) | [\[name\].vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/posts/author/%5Bname%5D.vue) | [\[name\].tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/posts/author/%5Bname%5D.tsx) | -| Display Posts by Tag | [/posts/tagged/markdown](/posts/tagged/markdown) | [\[tag\].vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/posts/tagged/%5Btag%5D.vue) | [\[tag\].tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/posts/tagged/%5Btag%5D.tsx) | -| Display Posts by Year | [/posts/year/2024](/posts/year/2024) | [\[year\].vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/posts/year/%5Byear%5D.vue) | [\[year\].tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/posts/year/%5Byear%5D.tsx) | - -#### Configuration - -Additional information about the Website Blog is maintained in `_posts/config.json` - -```json -{ - "localBaseUrl": "http://localhost:5173", - "publicBaseUrl": "https://press-vue.servicestack.net", - "siteTwitter": "@Vue", - "blogTitle": "From the blog", - "blogDescription": "Writing on software design and aerospace industry.", - "blogEmail": "email@example.org (Vue)", - "blogImageUrl": "https://servicestack.net/img/logo.png" -} -``` - -#### Authors - -Whilst information about Post Authors are maintained in `_posts/authors.json` - -```json -[ - { - "name": "Lucy Bates", - "email": "lucy@email.org", - "bio": "Writing on software design and aerospace industry.", - "profileUrl": "/img/profiles/user1.svg", - "twitterUrl": "https://twitter.com/lucy", - "threadsUrl": "https://threads.net/@lucy", - "gitHubUrl": "https://github.com/lucy" - }, -] -``` - -To associate an Author the **name** property is used to match a posts frontmatter **author**. - -### General Features - -Most unique markdown features are captured in their Markdown's frontmatter metadata, but in general these features -are broadly available for all features: - - - **Live Reload** - Latest Markdown content is displayed during **Development** - - **Drafts** - Prevent posts being worked on from being published with `draft: true` - - **Future Dates** - Posts with a future date wont be published until that date - -### What's New Feature - -The [/whatsnew](/whatsnew) page is an example of creating a custom Markdown feature to implement a portfolio or a product releases page -where a new folder is created per release, containing both release date and release or project name, with all features in that release -maintained markdown content sorted in alphabetical order: - -```files -/_whatsnew - /2023-03-08_Animaginary - feature1.md - /2023-03-18_OpenShuttle - feature1.md - /2023-03-28_Planetaria - feature1.md -``` - -What's New follows the same structure as Pages feature which is rendered in: - - - [whatsnew.vue](https://github.com/NetCoreTemplates/vue-spa/blob/main/MyApp.Client/src/pages/whatsnew.vue) - - [whatsnew.tsx](https://github.com/NetCoreTemplates/react-spa/blob/main/MyApp.Client/src/pages/whatsnew.tsx) - -### Videos Feature - -The videos feature maintained in the `_videos` folder allows grouping of related videos into different folder groups, e.g: - -```files -/_videos - /vue - admin.md - autoquerygrid.md - components.md - /react - locode.md - bookings.md - nextjs.md -``` - -These can then be rendered as UI fragments using the `` component, e.g: - -```tsx - -``` - -### Includes Feature - -The includes feature allows maintaining reusable markdown fragments in the `_includes` folder, e.g: - -```files -/_includes - /features - videos.md - whatsnew.md - privacy.md -``` - -Which can be included in other Markdown files with: - -```md -:::include privacy.md::: - -:::include features/include.md::: -``` - -Alternatively they can be included in other Vue, React or Markdown pages with the `` component, e.g: - -```tsx - - - -``` - -### Metadata APIs Feature - -To support external clients from querying static markdown metadata you can export it to pre-rendered static `*.json` -data structures by configuring `metadataPath` to the location you the `*.json` files published to, e.g: - -```ts -export default defineConfig({ - plugins: [ - Press({ - metadataPath: 'public/api', - }), - ] -}) -``` - -This will publish all the content of each content type in the year they were published in, along with an `all.json` containing -all content published in that year as well aso for all time, e.g: - -```files -/meta - /2022 - all.json - posts.json - videos.json - /2023 - all.json - posts.json - /2024 - all.json - posts.json - videos.json - whatsnew.json - all.json - index.json -``` - -With this you can fetch the metadata of all the new **Blog Posts** added in **2023** from: - -[/api/2024/blog.json](/api/2024/blog.json) - -Or all the website content added in **2024** from: - -[/api/2024/all.json](/api/2024/all.json) - -Or **ALL** the website metadata content from: - -[/api/all.json](/api/all.json) - -This feature makes it possible to support use-cases like CreatorKit's -[Generating Newsletters](https://servicestack.net/creatorkit/portal-mailruns#generating-newsletters) feature which generates -a Monthly Newsletter Email with all new content added within a specified period. - -## Markdown Containers - -Most of [VitePress Containers](https://vitepress.dev/guide/markdown#custom-containers) are also implemented, enabling -rich markup to enhance markdown content and documentation universally across all Markdown App implementations: - -#### Input - - :::info - This is an info box. - ::: - - :::tip - This is a tip. - ::: - - :::warning - This is a warning. - ::: - - :::danger - This is a dangerous warning. - ::: - -#### Output - -:::info -This is an info box. -::: - -:::tip -This is a tip. -::: - -:::warning -This is a warning. -::: - -:::danger -This is a dangerous warning. -::: - -### Custom Title - -You can specify a custom title by appending the text right after the container type: - -#### Input - - :::danger STOP - Danger zone, do not proceed - ::: - -#### Output - -:::danger STOP -Danger zone, do not proceed -::: - - -### copy - -The **copy** container is ideal for displaying text snippets in a component that allows for easy copying: - -#### Input - - :::copy - Copy Me! - ::: - -#### Output - -:::copy -Copy Me! -::: - -HTML or XML fragments can also be copied by escaping them first: - -#### Input - -```md -:::copy -`` -::: -``` - -#### Output - -:::copy -`` -::: - -### sh - -Similarly the **sh** container is ideal for displaying and copying shell commands: - -#### Input - - :::sh - npm run dev - ::: - -#### Output - -:::sh -npm run dev -::: - -### YouTube - -For embedding YouTube Videos, optimally rendered using the `` component, e.g: - -#### Input - - :::youtube YIa0w6whe2U - Vue Components Library - ::: - -#### Output - -:::youtube YIa0w6whe2U -Vue Components Library -::: - -## Markdown Fenced Code Blocks - -For more flexibility you can utilize custom fenced components like the `files` fenced code block which can -be used to capture ascii representation of a structured documentation like a folder & file structure, e.g: - - ```files - /_videos - /vue - admin.md - autoquerygrid.md - components.md - /react - locode.md - bookings.md - nextjs.md - ``` - -That we can render into a more UX-friendly representation by calling the `Files` component with the body -of the code-block to convert the structured ascii layout into a more familiar GUI layout: - -```files -/_videos - /vue - admin.md - autoquerygrid.md - components.md - /react - locode.md - bookings.md - nextjs.md -``` - -The benefit of this approach of marking up documentation is that the markdown content still remains in an optimal -human-readable form even when the markdown renderer lacks the custom fenced components to render the richer UI. - -## Components In Markdown - -Up till now all above features will let you render the same markdown content in all available Vue, React, Razor or Blazor -templates. At the cost of reduced portability, you're also able to embed rich Interactive Vue or React components directly in -markdown. - -::include component-links.md:: - diff --git a/MyApp/_posts/2024-04-01_pvq-intro.md b/MyApp/_posts/2024-04-01_pvq-intro.md new file mode 100644 index 0000000..4f47444 --- /dev/null +++ b/MyApp/_posts/2024-04-01_pvq-intro.md @@ -0,0 +1,93 @@ +--- +title: Getting Help in the Age of LLMs +summary: Introducing pvq.app - get immediate and relevant answers to your questions from large language models. +author: Demis Bellot +tags: [ai, llm, docs] +image: https://images.unsplash.com/photo-1697577418970-95d99b5a55cf?crop=entropy&fit=crop&h=1000&w=2000 +--- + +## Getting Help in the Age of LLMs + +Like most developers we're captivated by the amazing things large language models are capable of and the potential they +have to transform the way we interact with and use technology. One of the areas they can be immediately beneficial with +is in getting help in learning how to accomplish a task or solving a particular issue. + +Previously we would need to seek out answers by scanning the Internet, reading through documentation and blogs to find +out answers for ourselves. Forums and particularly Stack Overflow have been a great resource for developers in being able +to get help from other developers who have faced similar issues. But the timeliness and quality of the responses can vary +based on the popularity of the question and the expertise of the person answering. Answers may also not be 100% relevant +to our specific situation, potentially requiring reading through multiple answers from multiple questions to get the help +we want. + +But now, with the advent of large language models, we can get help in a more natural way by simply asking a question in +plain English and getting an immediate response that is tailored to our specific needs. + +## Person vs Question + +[pvq.app](https://pvq.app) is our attempt at providing a useful platform for other developers in this new age by enlisting +the help of large language models to provide immediate and relevant answers to your questions. But instead of just using +a single LLM to provide answers, we're using multiple models to provide different perspectives on the same question that +we'll use to analyze the strengths of different LLMs at answering different types of questions. + +## Initial Base Line + +For our initial dataset we're starting with the top 100k questions from StackOverflow and running them through a number +of quality Open LLMs that we've found to perform great for answering programming questions: + +- [Phi-2](https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/) (2.7B) by Microsoft +- [Gemma 2B](https://ai.google.dev/gemma) (2B) by Google +- [Qwen 1.5](https://github.com/QwenLM/Qwen1.5) (4B) by Qwen Team +- [DeepSeek Coder 6.7B](https://github.com/QwenLM/Qwen1.5) (6.7B) by DeepSeek AI +- [Code Llama2 7B](https://llama.meta.com/llama2/) (7B) by Meta +- [Gemma 7B](https://ai.google.dev/gemma) (7B) by Google +- [Mistral 7B](https://mistral.ai/news/announcing-mistral-7b/) (7B) by Mistral AI +- [Mixtral 8x7B](https://mistral.ai/news/mixtral-of-experts/) (8x7B) by Mistral AI +- [DeepSeek Coder 33B](https://deepseekcoder.github.io/) (33B) by DeepSeek AI + +Our initial pass will be to see how well each of these models perform on the StackOverflow dataset which we'll keep track +of and publish on our [Leaderboard](/leaderboard) page which we're also comparing against the highest voted and +accepted answers on StackOverflow to see how well they measure up against the best human answers. + +## Future Work + +After establishing the initial base line we'll look towards evaluating different strategies and specialized models to +see if we're able to improve the quality of answers that can be provided. + +## New Questions + +For new questions asked we'll also include access to the best performing proprietary models to active users as they +[ask more questions](/questions/ask), including: + +- [Claude 3 Haiku](https://www.anthropic.com/news/claude-3-haiku) by Anthropic +- [Gemini Pro](https://blog.google/technology/ai/google-gemini-ai/) by Google +- [Claude 3 Sonnet](https://www.anthropic.com/news/claude-3-family) by Anthropic +- [GPT 4 Turbo](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo) by OpenAI +- [Claude 3 Opus](https://www.anthropic.com/claude) by Anthropic + +## Open Questions and Answers for all + +All questions, answers and comments is publicly available for everyone to freely use under the same +[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license used by StackOverflow. + +## Help us improve Answers + +You can help us improve the quality of answers by providing any kind of feedback including asking new questions, +up voting good answers and down voting bad ones, correcting answers with inaccuracies or leaving comments suggesting +improvements or adding additional context and clarifications to answers. Our most active users who help curate and improve +the quality of questions and answers will have the opportunity to become moderators where they'll have access to +all our models. + +We also welcome attempts to beat the large language models by providing your own answers to questions. We'll rank +new answers and include votes they receive from the community to determine the best answers. + +We'll use this feedback to update our leaderboard and improve the quality of answers provided. + +## Feedback ❤️ + +We're still in the very early stages of development and would love to hear your feedback on how we can improve pvq.app +to become a better platform for answering technical questions. You can provide feedback in our +[GitHub Discussions](https://github.com/ServiceStack/pvq/discussions): + +- [Feature Requests](https://github.com/ServiceStack/pvq/discussions/categories/ideas) +- [Report Issues](https://github.com/ServiceStack/pvq/issues) +- [General Feedback](https://github.com/ServiceStack/pvq/discussions) diff --git a/MyApp/_posts/authors.json b/MyApp/_posts/authors.json index 8a2625f..dd6737a 100644 --- a/MyApp/_posts/authors.json +++ b/MyApp/_posts/authors.json @@ -1,4 +1,22 @@ [ + { + "name": "Demis Bellot", + "email": "demis@servicestack.com", + "bio": "Father of 3 when not deving @ servicestack.net", + "profileUrl": "/img/authors/demis.jpg", + "gitHubUrl": "https://github.com/mythz", + "twitterUrl": "https://twitter.com/demisbellot", + "threadsUrl": "https://threads.net/@demisbellot" + }, + { + "name": "Darren Reid", + "email": "darren@servicestack.com", + "bio": "Developer @ServiceStack, Tech author + consultant, renewable energy nerd, fetcher of treats for 2 Greyhounds.", + "profileUrl": "/img/authors/darren.jpg", + "gitHubUrl": "https://github.com/layoric", + "twitterUrl": "https://twitter.com/layoric", + "MastodonUrl": "https://reidodon.net/@layoric" + }, { "name": "Lucy Bates", "email": "lucy@email.org", diff --git a/MyApp/wwwroot/img/authors/darren.jpg b/MyApp/wwwroot/img/authors/darren.jpg new file mode 100644 index 0000000..2befc06 Binary files /dev/null and b/MyApp/wwwroot/img/authors/darren.jpg differ diff --git a/MyApp/wwwroot/img/authors/demis.jpg b/MyApp/wwwroot/img/authors/demis.jpg new file mode 100644 index 0000000..deffd10 Binary files /dev/null and b/MyApp/wwwroot/img/authors/demis.jpg differ