An open API service indexing awesome lists of open source software.

https://github.com/expecho/spiderai

Spider AI showcases what is possible using LLMs using .Net
https://github.com/expecho/spiderai

azure-openai csharp dotnet dotnet-aspire llm open-telemetry semantic-kernel

Last synced: 5 months ago
JSON representation

Spider AI showcases what is possible using LLMs using .Net

Awesome Lists containing this project

README

        

# Spider AI

Spider AI showcases what is possible using LLMs using .Net. It is build using

- [Semantic Kernel](https://learn.microsoft.com/en-us/semantic-kernel/overview/)
- [.Net Aspire](https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview)
- [Open Telemetry](https://opentelemetry.io/)

## Features

- Support for [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview)

## Solution Structure

The solution consists of the following projects:

### SpiderAI.Core

The heart of the solution. It contains the core logic for the application built using Semantic Kernel. It calls the AI models and is responsible for handling model state and configuration.

### SpiderAI.Server

Provides http endpoint to interact with the core logic.

### SpiderAI.Client

Contains clients to interact with the server built using .Net Maui.

### SpiderAI.Web(.Client)

Web app and Blazor client to interact with the server.

### SpiderAI.Shared

Defines the shared layout used by the Blazor client and .Net Maui clients.

### SpiderAI.AppHost

.Aspire project, this project is defined as the startup project for the solution and starts the web server, blazor client and the web api.

## Getting Started

### Configuration

Currently the configuration is retrieved from a url. The url can be congifured by configuring the value of the setting "BlobStorageConfiguration" in the `appsettings.json` file of the *SpiderAI.Server* project .

#### Azure Open AI Configuration

The configuration for Azure Open AI is expected to be in the following format:

```json
"AzureOpenAI": {
"Endpoint": "https://xxx.openai.azure.com/",
"ApiKey": "xxx",
"Models": [
{
"ModelId": "xxx",
"Capability": "Chat",
"Name": "Chat"
},
{
"ModelId": "yyy",
"Capability": "TextEmbedding",
"Name": "Text Embedding"
},
{
"ModelId": "zzz",
"Capability": "ImageGeneration",
"Name": "Image Generation"
}
]
}
```

- ModelId must be a valid model id from Azure OpenAI.
- Capability is used to determine which model to use for the given request or task.
- Name is used to select a model in the UI.