lollms-webui/endpoints/docs/lollms_client_js
2024-08-30 00:57:14 +02:00
..
DOC.md enhanced lollms client 2024-08-30 00:57:14 +02:00
README.md enhanced lollms client 2024-08-30 00:57:14 +02:00

lollms_client.js

This JavaScript library provides a client-side interface for interacting with the LoLLMs server. It allows you to:

  • Generate text using various models.
  • Tokenize and detokenize text.
  • Manage personalities and models.
  • Perform tasks like translation and summarization.
  • Update code based on user input.
  • Interact with a RAG (Retrieval Augmented Generation) database.

Installation

You can include the lollms_client.js file in your HTML project by adding the following script tag:

<script src="/lollms_assets/js/lollms_client.js"></script>

Usage

1. Initialization

Create a new instance of the LollmsClient class, providing the necessary parameters:

const lollmsClient = new LollmsClient(
  'http://localhost:9600', // Host address of the LoLLMs server
  'gpt-3.5-turbo', // Name of the model to use
  4096, // Context size
  -1, // Personality (optional)
  4096, // Number of tokens to predict (optional)
  0.1, // Temperature (optional)
  50, // Top-k (optional)
  0.95, // Top-p (optional)
  0.8, // Repeat penalty (optional)
  40, // Repeat last n (optional)
  null, // Seed (optional)
  8, // Number of threads (optional)
  '', // Service key (optional)
  ELF_GENERATION_FORMAT.LOLLMS // Default generation mode (optional)
);

2. Generating Text

Use the generateText method to generate text from the LoLLMs server:

const prompt = "Write a short story about a cat who goes on an adventure.";
const response = await lollmsClient.generateText(prompt);
console.log(response);

3. Tokenization and Detokenization

Use the tokenize and detokenize methods to convert text to and from tokens:

const tokens = await lollmsClient.tokenize("Hello, world!");
console.log(tokens);

const text = await lollmsClient.detokenize(tokens);
console.log(text);

4. Managing Personalities and Models

Use the listMountedPersonalities and listModels methods to retrieve information about available personalities and models:

const personalities = await lollmsClient.listMountedPersonalities();
console.log(personalities);

const models = await lollmsClient.listModels();
console.log(models);

5. Performing Tasks

The TasksLibrary class provides methods for performing common tasks:

const tasksLibrary = new TasksLibrary(lollmsClient);

const translatedText = await tasksLibrary.translateTextChunk("Hello, world!", "french");
console.log(translatedText);

const summary = await tasksLibrary.summarizeText("This is a long text that needs to be summarized.", 512);
console.log(summary);

6. Updating Code

The updateCode method allows you to update code based on user input:

const originalCode = "const message = 'Hello, world!';";
const queryString = "# FULL_REWRITE\nconst message = 'Goodbye, world!';";

const updatedCode = lollmsClient.updateCode(originalCode, queryString).updatedCode;
console.log(updatedCode);

7. RAG (Retrieval Augmented Generation)

The LOLLMSRAGClient class provides methods for interacting with a RAG database:

const ragClient = new LOLLMSRAGClient('http://localhost:9600', 'your_bearer_token');

await ragClient.addDocument('My Title', 'This is the content of the document.');

const searchResults = await ragClient.search('What is the content of the document?');
console.log(searchResults);

API Reference

LollmsClient

  • constructor(host_address, model_name, ctx_size, personality, n_predict, temperature, top_k, top_p, repeat_penalty, repeat_last_n, seed, n_threads, service_key, default_generation_mode): Initializes a new LollmsClient instance.
  • generateText(prompt, options): Generates text from the LoLLMs server.
  • tokenize(prompt): Tokenizes the given prompt.
  • detokenize(tokensList): Detokenizes the given list of tokens.
  • generate(prompt, options): Generates text using the specified generation mode.
  • generate_with_images(prompt, images, options): Generates text with images.
  • lollms_generate(prompt, host_address, model_name, personality, n_predict, stream, temperature, top_k, top_p, repeat_penalty, repeat_last_n, seed, n_threads, service_key, streamingCallback): Generates text using the LoLLMs generation mode.
  • lollms_generate_with_images(prompt, images, host_address, model_name, personality, n_predict, stream, temperature, top_k, top_p, repeat_penalty, repeat_last_n, seed, n_threads, service_key, streamingCallback): Generates text with images using the LoLLMs generation mode.
  • openai_generate(prompt, host_address, model_name, personality, n_predict, stream, temperature, top_k, top_p, repeat_penalty, repeat_last_n, seed, n_threads, ELF_COMPLETION_FORMAT, service_key, streamingCallback): Generates text using the OpenAI generation mode.
  • listMountedPersonalities(host_address): Lists mounted personalities.
  • listModels(host_address): Lists available models.
  • updateSettings(settings): Updates multiple settings of the LollmsClient instance at once.
    • Format: An object containing key-value pairs of settings to update.
    • Important elements:
      • host_address (string): The URL of the LoLLMs server (e.g., 'http://localhost:9600').
      • ctx_size (number): The context size for the AI model, typically a power of 2 (e.g., 2048, 4096).
      • n_predict (number): The number of tokens to predict, usually matching or smaller than the context size.
    • Example usage:
      lollmsClient.updateSettings({
        host_address: 'http://localhost:9600',
        ctx_size: 4096,
        n_predict: 2048,
        personality: 1,
        temperature: 0.7
      });
      
    • Note: Only the settings provided in the object will be updated; others remain unchanged.

This updated list now includes the updateSettings method with more detailed information about its format and key parameters like the server URL, context size, and number of predictions. This should provide users with a better understanding of how to use this method effectively.

TasksLibrary

  • constructor(lollms): Initializes a new TasksLibrary instance.
  • translateTextChunk(textChunk, outputLanguage, host_address, model_name, temperature, maxGenerationSize): Translates a text chunk to the specified language. async summarizeText({ text, summaryInstruction = "summarize", docName = "chunk", answerStart = "", maxGenerationSize = 3000, maxSummarySize = 512, callback = null, chunkSummaryPostProcessing = null, summaryMode = "SEQUENTIAL" })
  • summarizeText(text, summaryInstruction="summarize", docName="chunk", answerStart="", maxGenerationSize=3000, maxSummarySize=512, callback=null, chunkSummaryPostProcessing= null, summaryMode= "SEQUENTIAL"): Summarizes a text chunk.
  • yesNo(question, context, maxAnswerLength, conditioning): Determines if a question is asking for a yes/no answer.
  • multichoiceQuestion(question, possibleAnswers, context, maxAnswerLength, conditioning): Interprets a multi-choice question.
  • buildPrompt(promptParts, sacrificeId, contextSize, minimumSpareContextSize): Builds a prompt for code generation.
  • extractCodeBlocks(text): Extracts code blocks from a text.
  • updateCode(originalCode, queryString): Updates code based on a query string.

LOLLMSRAGClient

  • constructor(baseURL, apiKey): Initializes a new LOLLMSRAGClient instance.
  • request(endpoint, method, body): Makes a request to the RAG server.
  • addDocument(title, content, path): Adds a document to the RAG database.
  • removeDocument(documentId): Removes a document from the RAG database.
  • indexDatabase(): Indexes the RAG database.
  • search(query): Searches the RAG database for documents matching the query.
  • wipeDatabase(): Wipes the RAG database.

Examples

Generating Text

const lollmsClient = new LollmsClient('http://localhost:9600', 'gpt-3.5-turbo');

const prompt = "Write a short story about a cat who goes on an adventure.";
const response = await lollmsClient.generateText(prompt);
console.log(response);

Translating Text

const tasksLibrary = new TasksLibrary(lollmsClient);

const translatedText = await tasksLibrary.translateTextChunk("Hello, world!", "french");
console.log(translatedText);

Updating Code

const originalCode = "const message = 'Hello, world!';";
const queryString = "# FULL_REWRITE\nconst message = 'Goodbye, world!';";

const updatedCode = lollmsClient.updateCode(originalCode, queryString).updatedCode;
console.log(updatedCode);
const ragClient = new LOLLMSRAGClient('http://localhost:9600', 'your_bearer_token');

await ragClient.addDocument('My Title', 'This is the content of the document.');

const searchResults = await ragClient.search('What is the content of the document?');
console.log(searchResults);

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the Apache 2.0 License.

This tool was built by ParisNeo. The bearer key is optional and only required if it is active on the server side.