{"id":27113329,"url":"https://github.com/aliencube/open-chat-playground","last_synced_at":"2025-10-06T18:33:13.472Z","repository":{"id":284923568,"uuid":"956495378","full_name":"aliencube/open-chat-playground","owner":"aliencube","description":"This provides a web UI for AI chat playground that is able to connect virtually any LLM from any platform.","archived":false,"fork":false,"pushed_at":"2025-03-28T11:19:24.000Z","size":452,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-28T12:23:01.197Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliencube.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-28T10:54:20.000Z","updated_at":"2025-03-28T11:20:11.000Z","dependencies_parsed_at":"2025-03-28T12:33:33.191Z","dependency_job_id":null,"html_url":"https://github.com/aliencube/open-chat-playground","commit_stats":null,"previous_names":["aliencube/open-chat-playground"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliencube%2Fopen-chat-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliencube%2Fopen-chat-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliencube%2Fopen-chat-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliencube%2Fopen-chat-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliencube","download_url":"https://codeload.github.com/aliencube/open-chat-playground/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247584047,"owners_count":20962071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-07T02:51:38.806Z","updated_at":"2025-10-06T18:33:13.454Z","avatar_url":"https://github.com/aliencube.png","language":"C#","readme":"# \u003cimg src=\"./assets/icon-transparent.svg\" alt=\"Icon for OpenChat Playground\" width=\"32\" /\u003e Open Chat Playground\r\n\r\nOpen Chat Playground (OCP) is a web UI that is able to connect virtually any LLM from any platform.\r\n\r\n![OpenChat Playground - hero image](./images/ocp-hero.png)\r\n\r\n## Supported platforms\r\n\r\n- [ ] [Amazon Bedrock](https://docs.aws.amazon.com/bedrock)\r\n- [ ] [Azure AI Foundry](https://learn.microsoft.com/azure/ai-foundry/what-is-azure-ai-foundry)\r\n- [x] [GitHub Models](https://docs.github.com/github-models/about-github-models)\r\n- [ ] [Google Vertex AI](https://cloud.google.com/vertex-ai/docs)\r\n- [ ] [Docker Model Runner](https://docs.docker.com/ai/model-runner)\r\n- [ ] [Foundry Local](https://learn.microsoft.com/azure/ai-foundry/foundry-local/what-is-foundry-local)\r\n- [x] [Hugging Face](https://huggingface.co/docs)\r\n- [ ] [Ollama](https://github.com/ollama/ollama/tree/main/docs)\r\n- [ ] [Anthropic](https://docs.anthropic.com)\r\n- [ ] [Naver](https://api.ncloud-docs.com/docs/ai-naver-clovastudio-summary)\r\n- [ ] [LG](https://github.com/LG-AI-EXAONE)\r\n- [x] [OpenAI](https://openai.com/api)\r\n- [ ] [Upstage](https://console.upstage.ai/docs/getting-started)\r\n\r\n## Prerequisites\r\n\r\n- [Azure Subscription](https://azure.microsoft.com/free)\r\n- [.NET SDK 9](https://dotnet.microsoft.com/download/dotnet/9.0)\r\n- [Visual Studio Code](https://code.visualstudio.com/) + [C# DevKit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) or [Visual Studio 2022 v17.14+](https://visualstudio.com/vs)\r\n- [Docker Desktop](https://docs.docker.com/desktop/)\r\n- [Azure Developer CLI](https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd)\r\n- [GitHub CLI](https://cli.github.com/)\r\n- [PowerShell 7.5+](https://learn.microsoft.com/powershell/scripting/install/installing-powershell) 👉 Windows only\r\n\r\n## Getting started\r\n\r\n### Get the repository ready\r\n\r\n1. Login to GitHub.\r\n\r\n    ```bash\r\n    gh auth login\r\n    ```\r\n\r\n1. Check login status.\r\n\r\n    ```bash\r\n    gh auth status\r\n    ```\r\n\r\n1. Fork this repository to your account and clone the forked repository to your local machine.\r\n\r\n    ```bash\r\n    gh repo fork aliencube/open-chat-playground --clone --default-branch-only\r\n    ```\r\n\r\n1. Navigate to the cloned repository.\r\n\r\n    ```bash\r\n    cd open-chat-playground\r\n    ```\r\n\r\n### Run on local machine\r\n\r\n- [Use GitHub Models](./docs/github-models.md#run-on-local-machine)\r\n- [Use Hugging Face](./docs/hugging-face.md#run-on-local-machine)\r\n- [Use OpenAI](./docs/openai.md#run-on-local-machine)\r\n\r\n### Run in local container\r\n\r\n- [Use GitHub Models](./docs/github-models.md#run-in-local-container)\r\n- [Use Hugging Face](./docs/hugging-face.md#run-in-local-container)\r\n- [Use OpenAI](./docs/openai.md#run-in-local-container)\r\n\r\n### Run on Azure\r\n\r\n- [Use GitHub Models](./docs/github-models.md#run-on-azure)\r\n- [Use Hugging Face](./docs/hugging-face.md#run-on-azure)\r\n- [Use OpenAI](./docs/openai.md#run-on-azure)\r\n\r\n### Run as API\r\n\r\n1. Run the app - either locally or remotely.\r\n1. Navigate to `{{APP_URL}}/openapi.json` to see the OpenAPI doc. **NOTE**: the OpenAPI doc is only able to see on a local machine, not on a remote instance.\r\n1. Send a `POST` request to `{{APP_URL}}/api/chat/responses` with a request payload like:\r\n\r\n    ```json\r\n    [\r\n      {\r\n        \"role\": \"system\",\r\n        \"message\": \"You're a friendly assistant\"\r\n      },\r\n      {\r\n        \"role\": \"user\",\r\n        \"message\": \"Why is the sky blue?\"\r\n      }\r\n    ]\r\n    ```\r\n\r\n1. Confirm the response payload like:\r\n\r\n    ```jsonc\r\n    [\r\n      {\r\n        \"role\": \"assistant\",\r\n        \"message\": \"Because \"\r\n      },\r\n      {\r\n        \"role\": \"assistant\",\r\n        \"message\": \"It's \"\r\n      },\r\n      {\r\n        \"role\": \"assistant\",\r\n        \"message\": \"... \"\r\n      },\r\n      ...\r\n      {\r\n        \"role\": \"assistant\",\r\n        \"message\": \"... \"\r\n      }\r\n    ]\r\n    ```\r\n\r\n### Run tests\r\n\r\n#### Build app\r\n\r\n1. Make sure you are at the repository root.\r\n\r\n    ```bash\r\n    cd $REPOSITORY_ROOT\r\n    ```\r\n\r\n1. Build the app.\r\n\r\n    ```bash\r\n    dotnet restore \u0026\u0026 dotnet build\r\n    ```\r\n\r\n#### Unit tests\r\n\r\n1. Make sure you are at the repository root.\r\n\r\n    ```bash\r\n    cd $REPOSITORY_ROOT\r\n    ```\r\n\r\n1. Run tests.\r\n\r\n    ```bash\r\n    dotnet test --filter \"Category=UnitTest\"\r\n    ```\r\n\r\n#### Integration tests\r\n\r\n1. Make sure you are at the repository root.\r\n\r\n    ```bash\r\n    cd $REPOSITORY_ROOT\r\n    ```\r\n\r\n1. Install playwright.\r\n\r\n    ```bash\r\n    pwsh $REPOSITORY_ROOT/test/OpenChat.PlaygroundApp.Tests/bin/Debug/net{YOUR_VERSION}/playwright.ps1 install\r\n    ```\r\n\r\n1. Run the app.\r\n\r\n    ```bash\r\n    dotnet run --project $REPOSITORY_ROOT/src/OpenChat.PlaygroundApp\r\n    ```\r\n\r\n1. Run tests.\r\n\r\n    ```bash\r\n    # With LLM provider\r\n    dotnet test --filter \"Category=IntegrationTest\"\r\n    ```\r\n\r\n    ```bash\r\n    # Without LLM provider\r\n    dotnet test --filter \"Category=IntegrationTest \u0026 Category!=LLMRequired\"\r\n    ```\r\n\r\n### Configure GitHub Actions for CI/CD Pipeline\r\n\r\n1. Make sure you are at the repository root.\r\n\r\n    ```bash\r\n    cd $REPOSITORY_ROOT\r\n    ```\r\n\r\n1. Make sure you've logged in to Azure.\r\n\r\n    ```bash\r\n    azd auth login --check-status\r\n    ```\r\n\r\n1. Run pipeline config.\r\n\r\n    ```bash\r\n    azd pipeline config\r\n    ```\r\n\r\n1. Answer the question below:\r\n\r\n   - `? Select how to authenticate the pipeline to Azure` 👉 `Federated Service Principal (SP + OIDC)`\r\n   - `? Would you like to commit and push your local changes to start the configured CI pipeline?` 👉 `No`\r\n\r\n1. Once the configuration is done, push a new commit to GitHub to run the GitHub Actions workflow.\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliencube%2Fopen-chat-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliencube%2Fopen-chat-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliencube%2Fopen-chat-playground/lists"}