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
-
-
-
-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
-
-
-
-### .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**
-
-
-
-### 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