intelligentnode / IntelliNode

Access the latest AI models like ChatGPT, LLaMA, Diffusion, Gemini Hugging face, and beyond through a unified prompt layer and performance evaluation
https://show.intellinode.ai
Apache License 2.0
213 stars 13 forks source link
anthropic chatbot chatgpt claude dall-e embeddings gemini google-ai gpt-4 hugging-face image-generation language-model mistralai nodejs openai prompt-engineering semantic-search speech-synthesis vectors

Unified prompt, evaluation, and production integration to any large model

Intelligent Node

IntelliNode is a javascript module that integrates cutting-edge AI into your project. With its intuitive functions, you can easily feed data to models like ChatGPT, LLaMA, WaveNet, Gemini and Stable diffusion and receive generated text, speech, or images. It also offers high-level functions such as semantic search, multi-model evaluation, and chatbot capabilities.

Access the module

Install

One command and get access to latest models:

npm i intellinode

For detailed usage instructions, refer to the documentation.

Examples

Gen

The Gen function quickly generates tailored content in one line.

import:

const { Gen } = require('intellinode');

call:

// one line to generate html page code (openai gpt4 is default)
text = 'a registration page with flat modern theme.'
await Gen.save_html_page(text, folder, file_name, openaiKey);
// or generate blog post (using cohere)
const blogPost = await Gen.get_blog_post(prompt, apiKey, provider='cohere');

Chatbot

import:

const { Chatbot, ChatGPTInput } = require('intellinode');

call:

// set chatGPT system mode and the user message.
const input = new ChatGPTInput('You are a helpful assistant.');
input.addUserMessage('What is the distance between the Earth and the Moon?');

// get chatGPT responses.
const chatbot = new Chatbot(OPENAI_API_KEY, 'openai');
const responses = await chatbot.chat(input);

Gemini Chatbot

IntelliNode enable effortless swapping between AI models.

  1. imports:
    const { Chatbot, GeminiInput, SupportedChatModels } = require('intellinode');
  2. call:
    
    const input = new GeminiInput();
    input.addUserMessage('Who painted the Mona Lisa?');

const geminiBot = new Chatbot(apiKey, SupportedChatModels.GEMINI); const responses = await geminiBot.chat(input);


The documentation to switch the chatbot provider between ChatGPT, LLama, Cohere, Mistral and more can be found in the [IntelliNode Wiki](https://github.com/Barqawiz/IntelliNode/wiki/ChatBot).

### Semantic search
import:
```js
const { SemanticSearch } = require('intellinode');

call:

const search = new SemanticSearch(apiKey);
// pivotItem is the item to search.
const results = await search.getTopMatches(pivotItem, searchArray, numberOfMatches);
const filteredArray = search.filterTopMatches(results, searchArray)

Prompt engineering

Generate improved prompts using LLMs:

const promptTemp = await Prompt.fromChatGPT("fantasy image with ninja jumping across buildings", openaiApiKey);
console.log(promptTemp.getInput());

Language models

import:

const { RemoteLanguageModel, LanguageModelInput } = require('intellinode');

call openai model:

const langModel = new RemoteLanguageModel('openai-key', 'openai');
model_name = 'gpt-3.5-turbo-instruct'

const results = await langModel.generateText(new LanguageModelInput({
  prompt: 'Write a product description for smart plug that works with voice assistant.',
  model: model_name,
  temperature: 0.7
}));

console.log('Generated text:', results[0]);

change to call cohere models:

const langModel = new RemoteLanguageModel('cohere-key', 'cohere');
model_name = 'command-xlarge-20221108'
// ... same code

Image models

import:

const { RemoteImageModel, SupportedImageModels, ImageModelInput } = require('intellinode');

call DALL·E:

provider=SupportedImageModels.OPENAI;

const imgModel = new RemoteImageModel(apiKey, provider);
const images = await imgModel.generateImages(new ImageModelInput({
    prompt: 'teddy writing a blog in times square',
    numberOfImages: 1
}));

change to call Stable Diffusion:

provider=SupportedImageModels.STABILITY;
// ... same code

Openai advanced access

To access Openai services from your Azure account, you have to call the following function at the beginning of your application:

const { ProxyHelper } = require('intellinode');
ProxyHelper.getInstance().setAzureOpenai(resourceName);

To access Openai from a proxy for restricted regions:

ProxyHelper.getInstance().setOpenaiProxyValues(openaiProxyJson);

For more details and in-depth code, check the samples.

The code repository setup

First setup

  1. Initiate the project:

    cd IntelliNode
    npm install
  2. Create a .env file with the access keys:

    OPENAI_API_KEY=<key_value>
    COHERE_API_KEY=<key_value>
    GOOGLE_API_KEY=<key_value>
    STABILITY_API_KEY=<key_value>
    HUGGING_API_KEY=<key_value>

Test cases

  1. run the remote language models test cases: node test/integration/RemoteLanguageModel.test.js

  2. run the remote image models test cases: node test/integration/RemoteImageModel.test.js

  3. run the remote speech models test cases: node test/integration/RemoteSpeechModel.test.js

  4. run the embedding test cases: node test/integration/RemoteEmbedModel.test.js

  5. run the chatBot test cases: node test/integration/Chatbot.test.js

:closed_book: Documentation

Pillars

The module foundation:

Roadmap

Call for contributors: registration form .

License

Apache License

Copyright 2023 Github.com/Barqawiz/IntelliNode

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.