Giter VIP home page Giter VIP logo

mistralsharp's Introduction

MistralSharp

C# NuGet License

About

MistralSharp is an unofficial .NET SDK for the Mistral AI Platform. Great for building AI-enhanced apps!

Features

  • Implements all Mistral AI Platform REST API endpoints.
  • Targets .NET Standard 2.0 and .NET 8.

Usage

Start by downloading the nuget package and importing it into your project.

Check out the Sample project to see an example of how to use the library in a simple console application.

To access the API endpoints, create a new instance of the MistralClient class and pass in your API key:

var mistralClient = new MistralClient(apiKey);

Dependency Injection

services.AddMistral(options =>
{
    options.ApiKey = "YOUR_API_KEY";
});

Endpoints

GetAvailableModelsAsync()

This endpoint returns a list of available AI models on the Mistral platform.

var models = await mistralClient.GetAvailableModelsAsync();

ChatAsync()

This method allows you to chat with an AI model of your choice. To start a chat, first create a new ChatRequest object (note: only Model and Messages are required, the other parameters are optional and will default to the values specified below):

var chatRequest = new ChatRequest()
{
    
    // The ID of the model to use. You can use GetAvailableModelsAsync() to get the list of available models
    Model = ModelType.MistralMedium,
    
    // Pass a list of messages to the model. 
    // The role can either be "user" or "agent"
    // Content is the message content
    Messages =
    [
        new Message()
        {
            Role = "user",
            Content = "How can Mistral AI assist programmers?"
        }
    ],
    
    //The maximum number of tokens to generate in the completion.
    // The token count of your prompt plus max_tokens cannot exceed the model's context length.
    MaxTokens = 64,
    
    //  Default: 0.7
    // What sampling temperature to use, between 0.0 and 2.0.
    // Higher values like 0.8 will make the output more random, while lower values like 0.2 will make
    // it more focused and deterministic.
    Temperature = 0.7,
    
    //  Default: 1
    // Nucleus sampling, where the model considers the results of the tokens with top_p probability mass.
    // So 0.1 means only the tokens comprising the top 10% probability mass are considered.
    // Mistral generally recommends altering this or temperature but not both.
    TopP = 1,
    
    //  Default: false
    // Whether to stream back partial progress. If set, tokens will be sent as data-only server-sent events
    // as they become available, with the stream terminated by a data: [DONE] message. Otherwise, the server will
    // hold the request open until the timeout or until completion, with the response containing the full
    // result as JSON.
    Stream = false,
    
    //  Default: false
    // Whether to inject a safety prompt before all conversations.
    SafePrompt = false,
    
    //  Default: null
    // The seed to use for random sampling. If set, different calls will generate deterministic results.
    RandomSeed = null
};

Finally, call the ChatAsync() method and pass the ChatRequest object:

var sampleChat = await mistralClient.ChatAsync(chatRequest);

ChatStreamAsync()

Operates the same as ChatAsync() except with support for streaming back partial progress (ChatRequest.Stream set to true). Returns an IAsyncEnumerable<ChatResponse>.

NOTE: This will implemented in an upcoming release as it's still being worked on.

CreateEmbeddingsAsync()

The embeddings API allows you to embed sentences and can be used to power a RAG application. To use it, first create a create a new EmbeddingRequest object:

var embeddings = new EmbeddingRequest()
{
    // The ID of the model to use for this request.
    Model = ModelType.MistralEmbed,

    // The format of the output data.
    EncodingFormat = "float",
    
    // The list of strings to embed.
    Input = new List<string>()
    {
        "Hello",
        "World"
    }
};

Lastly, pass the EmbeddingRequest object to ChatEmbeddingsAsync() method:

var embeddedResponse = await mistralClient.CreateEmbeddingsAsync(embeddings);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.