diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index ccaa80e..94a006d 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42WXU+DMBSG/wvXi4uLLmaX7iMhcWqc8cZ4Uctx1JWW0BJnjP9dxpDRQU/PLc/7PjmcdhmvP5GFvY1m0R1T25JtwUSjKGc2rR6BKjMzbsFFajNZ0Z1QSTS7+R213cc47tUOz/yNJ8gl47AGm+qk13UpYtGyP2/90N+ZSwHKnkpcMmPAjI/P3d7lpNuMs2oLKyGhX25RsH8P9ksXO4+ioZjllhmYXi0V1wkUJ41QFoqPamlm7CRc1eR62l1Fyuyg4QBCxXmqBQdv/YhDkljlpX+EmpIUazCmWh9uakIk4UNuhVYGFzahkDA0HHGuzWbpVVSMUA8cWZsgqBYgLcNMdYAgwm/AfyAkehGmOgmv5ohpksCSuiGaEH/DToamC90mJ4UqdZZLsN69tZgmwfZ2FqIJkb25GUy3zN4hSYTaDopaSlIsmOfKOwmSyv9ubgSVFYUe/gOoCVZdMW5LJoX9HuyfME0yT4HvAqY6g+li9QncextbSlL4B3IjmKz5Bqk+YwZFJ0yT+Ec6y2C6Z70X3Hdq/5Ai8E/jJFBVwZSRzA7/5FtKUfgOvcP7mrc/h7NTc7sKAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42WXUvDMBSG/0uvh8OhQ3bpPqDgVJx4I17E9LjGpUlpUpyI/92uq12zNifnNs/7PiQnGevrT2Rhb6NZdMfUtmRbMNEoyplNqyVQZWbGLbhIbSYruhMqiWY3v6O2+xjHvdphzd94glwyDmuwqU56XZciFi37+60X/Z25FKDsqcQlMwbM+Lju9i4n3WacVVNYCQn9couC/XuwX7rYeRQNxSy3zMD0aqm4TqA4aYSyUHxUQzNjJ+GqJtfT7ihSZgcNBxAqzlMtOHjrRxySxCov/VuoKUmxBmOq8eGmJkQTltKKgO4QIckeciu0MriuCYWEoZMSD7nZLL2KihHqgftvEwTVAqRlmKkOEET4c/oPhEQvwlQ34dUcMU0SGFI3RBPiJ+xkaLrQa3JSqFJnuQTrnVuLaRJsbmchmhCZm5vBdMvsHZJEqO2gqKUkxYJ5nryTIKn8Z3MjqKwo9PC/SU2w6opxWzIp7Pdg/4RpknkKfBcw1RlMF6tP4N7X2FKSwr8hN4LJmg+a6ptoUHTCNIl/S2cZTPes94L7bu0fUgT+3TgJVFUwZSSzwz/5llIUvkvv8L7m7Q/UTmemCAsAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 0395207..c7c3baa 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/Client.html b/docs/classes/Client.html index 8ab2f32..1b50aae 100644 --- a/docs/classes/Client.html +++ b/docs/classes/Client.html @@ -18,16 +18,16 @@

Parameters

Returns Client

Methods

  • Chat generates chat completions based on a conversation history.

    -

    Parameters

    • input: ChatInput

      input represents the entire set of +

      Parameters

      Returns Promise<[Chat, null | Error]>

      • A Promise with a Chat object and an Error object if the error is not null.
      -
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Chat() {
      const input = {
      model: 'Neural-Chat-7B',
      messages: [
      {
      role: pg.Roles.User,
      content: 'How do you feel about the world in general',
      },
      ],
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      options: {
      factuality: true,
      toxicity: true,
      pii: pg.PIIs.Replace,
      piiReplaceMethod: pg.ReplaceMethods.Random,
      },
      };

      var [result, err] = await client.Chat(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content);
      }

      Chat(); +
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Chat() {
      const input = {
      model: 'Neural-Chat-7B',
      messages: 'How do you feel about the world in general',
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      options: {
      factuality: true,
      toxicity: true,
      pii: pg.PIIs.Replace,
      piiReplaceMethod: pg.ReplaceMethods.Random,
      },
      };

      var [result, err] = await client.Chat(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content);
      }

      async function ChatMulti() {
      const input = {
      model: 'Neural-Chat-7B',
      messages: [
      {
      role: pg.Roles.User,
      content: 'How do you feel about the world in general',
      },
      ],
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      options: {
      factuality: true,
      toxicity: true,
      pii: pg.PIIs.Replace,
      piiReplaceMethod: pg.ReplaceMethods.Random,
      },
      };

      var [result, err] = await client.Chat(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content);
      }

      Chat();
      ChatMulti();
      -
  • ChatSSE generates a stream of chat completions based on a +

  • ChatSSE generates a stream of chat completions based on a conversation history.

    Parameters

    • input: ChatSSEInput

      input represents the entire set of possible input for the SSE Chat call.

      @@ -38,7 +38,7 @@
      import * as pg from 'predictiongaurd';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function ChatSSE() {
      const input = {
      model: 'Neural-Chat-7B',
      messages: [
      {
      role: pg.Roles.User,
      content: 'How do you feel about the world in general',
      },
      ],
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      onMessage: function (event, err) {
      if (err != null) {
      if (err.error == 'EOF') {
      return;
      }
      console.log(err);
      }

      for (const choice of event.choices) {
      if (choice.delta.hasOwnProperty('content')) {
      process.stdout.write(choice.delta.content);
      }
      }
      },
      };

      var err = await client.ChatSSE(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }
      }

      ChatSSE();
      -
  • ChatVision generates answers a question about an image.

    Parameters

    • input: ChatVisionInput

      input represents the entire set of possible input for the Vision Chat call.

    Returns Promise<[ChatVision, null | Error]>

      @@ -48,7 +48,7 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function ChatVision() {
      const image = new pg.ImageNetwork('https://pbs.twimg.com/profile_images/1571574401107169282/ylAgz_f5_400x400.jpg');

      const input = {
      role: pg.Roles.User,
      question: 'is there a deer in this picture',
      image: image,
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      };

      var [result, err] = await client.ChatVision(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content);
      }

      ChatVision();
      -
  • Completion generates text completions based on the provided input.

    Parameters

    • input: CompletionInput

      input represents the entire set of possible input for the Completion call.

    Returns Promise<[Completion, null | Error]>

      @@ -58,7 +58,7 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Completions() {
      const input = {
      model: 'Neural-Chat-7B',
      prompt: 'Will I lose my hair',
      maxTokens: 1000,
      temperature: 0.1,
      topP: 0.1,
      topK: 50,
      };

      var [result, err] = await client.Completion(input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.choices[0].text);
      }

      Completions();
      -
  • Embedding generates chat completions based on a conversation history.

    +
  • Embedding generates chat completions based on a conversation history.

    Parameters

    • model: string

      model to use.

    • input: EmbeddingInput[]

      input represents a collection of text and images to vectorize.

      @@ -69,7 +69,7 @@
      import * as pg from 'predictiongaurd';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Embedding() {
      const image = new pg.ImageNetwork('https://pbs.twimg.com/profile_images/1571574401107169282/ylAgz_f5_400x400.jpg');

      const input = [
      {
      text: 'This is Bill Kennedy, a decent Go developer.',
      image: image,
      },
      ];

      var [result, err] = await client.Embedding('bridgetower-large-itm-mlm-itc', input);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      for (const dt of result.data) {
      process.stdout.write(dt.embedding.toString());
      }
      }

      Embedding();
      -
  • Factuality checks the factuality of a given text compared to a reference.

    +
  • Factuality checks the factuality of a given text compared to a reference.

    Parameters

    • reference: string

      reference represents the reference text for comparison.

    • text: string

      text represents the text to be checked @@ -81,7 +81,7 @@

      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Factuality() {
      const fact = `The President shall receive in full for his services during
      the term for which he shall have been elected compensation in the aggregate
      amount of 400,000 a year, to be paid monthly, and in addition an expense
      allowance of 50,000 to assist in defraying expenses relating to or resulting
      from the discharge of his official duties. Any unused amount of such expense
      allowance shall revert to the Treasury pursuant to section 1552 of title 31,
      United States Code. No amount of such expense allowance shall be included in
      the gross income of the President. He shall be entitled also to the use of
      the furniture and other effects belonging to the United States and kept in
      the Executive Residence at the White House.`;

      const text = `The president of the united states can take a salary of one
      million dollars`;

      var [result, err] = await client.Factuality(fact, text);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + JSON.stringify(result.checks[0]));
      }

      Factuality();
      -
  • HealthCheck validates the PG API Service is available.

    +
  • HealthCheck validates the PG API Service is available.

    Returns Promise<[string, null | Error]>

    • A Promise with a string and an Error object if the error is not null.
    • @@ -89,7 +89,7 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function HealthCheck() {
      var [result, err] = await client.HealthCheck();
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log(result);
      }

      HealthCheck();
      -
  • Injection detects potential prompt injection attacks in a given prompt.

    Parameters

    • prompt: string

      prompt represents the text to detect injection attacks against.

    Returns Promise<[Injection, null | Error]>

      @@ -99,14 +99,14 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Injection() {
      const prompt = `A short poem may be a stylistic choice or it may be that you
      have said what you intended to say in a more concise way.`;

      var [result, err] = await client.Injection(prompt);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.checks[0].probability);
      }

      Injection();
      -
  • RawDoGet performs a raw GET call.

    +
  • RawDoGet performs a raw GET call.

    Parameters

    • endpoint: string

      endpoint represents endpoint to call and does not include the transport or domain.

    Returns Promise<[any, null | Error]>

    • A Promise with a respose object and an error object if the error is not null.
    -
  • RawDoPost performs a raw POST call.

    +
  • RawDoPost performs a raw POST call.

    Parameters

    • endpoint: string

      endpoint represents endpoint to call and does not include the transport or domain.

    • body: any

      body represents an input object.

      @@ -114,7 +114,7 @@
    • A Promise with a respose object and an error object if the error is not null.
    -
  • RawDoSSEPost performs a raw POST call with SSE support.

    +
  • RawDoSSEPost performs a raw POST call with SSE support.

    Parameters

    • endpoint: string

      endpoint represents endpoint to call and does not include the transport or domain.

    • body: any

      body represents an input object.

      @@ -123,7 +123,7 @@
        • (event, err): void
        • Parameters

          • event: null | ServerSentEvent
          • err: null | Error

          Returns void

    Returns Promise<null | Error>

    • A Promise with an error object if the error is not null.
    -
  • ReplacePII replaces personal information such as names, SSNs, and +

  • ReplacePII replaces personal information such as names, SSNs, and emails in a given text.

    Parameters

    • replaceMethod: ReplaceMethods

      replaceMethod represents the method to use for replacing personal information.

      @@ -136,7 +136,7 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function ReplacePII() {
      const replaceMethod = pg.ReplaceMethods.Mask;
      const prompt = `My email is bill@ardanlabs.com and my number is 954-123-4567.`;

      var [result, err] = await client.ReplacePII(replaceMethod, prompt);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.checks[0].new_prompt);
      }

      ReplacePII();
      -
  • Toxicity checks the toxicity of a given text.

    Parameters

    • text: string

      text represents the text to be scored for toxicity.

    Returns Promise<[Toxicity, null | Error]>

      @@ -146,7 +146,7 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Toxicity() {
      const text = `Every flight I have is late and I am very angry. I want to
      hurt someone.`;

      var [result, err] = await client.Toxicity(text);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.checks[0].score);
      }

      Toxicity();
      -
  • Translate converts text from one language to another.

    +
  • Translate converts text from one language to another.

    Parameters

    • text: string

      text represents the text to be translated.

    • sourceLang: Languages

      sourceLang represents the source language of the text.

      @@ -161,4 +161,4 @@
      import * as pg from 'predictionguard';

      const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY);

      async function Translate() {
      const text = `The rain in Spain stays mainly in the plain`;
      const sourceLang = pg.Languages.English;
      const targetLang = pg.Languages.Spanish;
      const useThirdPartyEngine = false;

      var [result, err] = await client.Translate(text, sourceLang, targetLang, useThirdPartyEngine);
      if (err != null) {
      console.log('ERROR:' + err.error);
      return;
      }

      console.log('RESULT:' + result.best_translation);
      }

      Translate();
      -
+
diff --git a/docs/interfaces/Chat.html b/docs/interfaces/Chat.html index d6b00cb..022f11f 100644 --- a/docs/interfaces/Chat.html +++ b/docs/interfaces/Chat.html @@ -1,15 +1,15 @@ Chat | predictionguard

Interface Chat

Chat represents an object that contains the result for the chat call.

-
interface Chat {
    choices: ChatChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Chat {
    choices: ChatChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

choices: ChatChoice[]

choices represents the collection of choices to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
model: string

model represents the model used for generating the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
model: string

model represents the model used for generating the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/ChatChoice.html b/docs/interfaces/ChatChoice.html index cc1462a..f3786ed 100644 --- a/docs/interfaces/ChatChoice.html +++ b/docs/interfaces/ChatChoice.html @@ -1,7 +1,7 @@ ChatChoice | predictionguard

Interface ChatChoice

ChatChoice represents an object that contains a result choice.

-
interface ChatChoice {
    index: number;
    message: ChatMessage;
}

Properties

interface ChatChoice {
    index: number;
    message: ChatMessage;
}

Properties

Properties

index: number

index represents the index position in the collection for this choice.

-
message: ChatMessage

message represents the message response for this choice.

-
+
message: ChatMessage

message represents the message response for this choice.

+
diff --git a/docs/interfaces/ChatInput.html b/docs/interfaces/ChatInput.html index 2ef55b6..e100f2d 100644 --- a/docs/interfaces/ChatInput.html +++ b/docs/interfaces/ChatInput.html @@ -1,5 +1,5 @@ ChatInput | predictionguard

Interface ChatInput

ChatInput represents the full potential input options for chat.

-
interface ChatInput {
    maxTokens: number;
    messages: ChatInputMessage[];
    model: string;
    options: ChatInputOptions;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

interface ChatInput {
    maxTokens: number;
    messages: string;
    model: string;
    options: ChatInputOptions;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

Properties

maxTokens: number

maxTokens represents the max number of tokens to return.

-
messages: ChatInputMessage[]

messages represents the set of messages to process.

+
messages: string

message represents a message to process.

model: string

model represents the model to use.

options represents a set of optional parameters.

temperature: number

temperature represents the randomness in GPT's output.

diff --git a/docs/interfaces/ChatInputMulti.html b/docs/interfaces/ChatInputMulti.html new file mode 100644 index 0000000..8aad40f --- /dev/null +++ b/docs/interfaces/ChatInputMulti.html @@ -0,0 +1,16 @@ +ChatInputMulti | predictionguard

Interface ChatInputMulti

ChatInputMulti represents the full potential input options for chat.

+
interface ChatInputMulti {
    maxTokens: number;
    messages: ChatInputMessage[];
    model: string;
    options: ChatInputOptions;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

maxTokens: number

maxTokens represents the max number of tokens to return.

+
messages: ChatInputMessage[]

messages represents the set of messages to process.

+
model: string

model represents the model to use.

+

options represents a set of optional parameters.

+
temperature: number

temperature represents the randomness in GPT's output.

+
topK: number

topK represents the variability of the generated text.

+
topP: number

topP represents the diversity of the generated text.

+
diff --git a/docs/interfaces/ChatMessage.html b/docs/interfaces/ChatMessage.html index 1d08381..aeda15e 100644 --- a/docs/interfaces/ChatMessage.html +++ b/docs/interfaces/ChatMessage.html @@ -1,9 +1,7 @@ ChatMessage | predictionguard

Interface ChatMessage

ChatMessage represents an object that contains the content and a role. It can be used for input and returned as part of the response.

-
interface ChatMessage {
    content: string;
    output: string;
    role: Roles;
}

Properties

interface ChatMessage {
    content: string;
    role: Roles;
}

Properties

Properties

content: string

content represents the content of the message.

-
output: string

output represents the output for this message.

-
role: Roles

role represents the role of the sender (user or assistant).

-
+
role: Roles

role represents the role of the sender (user or assistant).

+
diff --git a/docs/interfaces/ChatSSE.html b/docs/interfaces/ChatSSE.html index 05d95c9..f79fa8f 100644 --- a/docs/interfaces/ChatSSE.html +++ b/docs/interfaces/ChatSSE.html @@ -1,16 +1,16 @@ ChatSSE | predictionguard

Interface ChatSSE

ChatSSE represents an object that contains the result for the chatSSE call.

-
interface ChatSSE {
    choices: ChatSSEChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

interface ChatSSE {
    choices: ChatSSEChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

choices: ChatSSEChoice[]

choices represents the collection of choices to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
model: string

model represents the model used for generating the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
model: string

model represents the model used for generating the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/ChatSSEChoice.html b/docs/interfaces/ChatSSEChoice.html index 6388096..51eb438 100644 --- a/docs/interfaces/ChatSSEChoice.html +++ b/docs/interfaces/ChatSSEChoice.html @@ -1,15 +1,15 @@ ChatSSEChoice | predictionguard

Interface ChatSSEChoice

ChatSSEChoice represents an object that contains a result choice.

-
interface ChatSSEChoice {
    delta: ChatSSEDelta;
    finish_reason: string;
    generated_text: string;
    index: number;
    logprobs: number;
}

Properties

interface ChatSSEChoice {
    delta: ChatSSEDelta;
    finish_reason: string;
    generated_text: string;
    index: number;
    logprobs: number;
}

Properties

delta represents the partial content for this choice.

-
finish_reason: string

finish_reason represents the reason the response has finished +

finish_reason: string

finish_reason represents the reason the response has finished which is provided when this is the last choice.

-
generated_text: string

generated_text represents the final completed chat response which +

generated_text: string

generated_text represents the final completed chat response which is provided when this is the last choice.

-
index: number

index represents the index position in the collection for +

index: number

index represents the index position in the collection for this choice.

-
logprobs: number

logprobs represents the log probabilty of accuracy for this choice.

-
+
logprobs: number

logprobs represents the log probabilty of accuracy for this choice.

+
diff --git a/docs/interfaces/ChatSSEDelta.html b/docs/interfaces/ChatSSEDelta.html index 4075607..9b3231b 100644 --- a/docs/interfaces/ChatSSEDelta.html +++ b/docs/interfaces/ChatSSEDelta.html @@ -1,4 +1,4 @@ ChatSSEDelta | predictionguard

Interface ChatSSEDelta

ChatSSEDelta represents an object that contains the content.

-
interface ChatSSEDelta {
    content: string;
}

Properties

interface ChatSSEDelta {
    content: string;
}

Properties

Properties

content: string

content represents the partial content response for a choice.

-
+
diff --git a/docs/interfaces/ChatSSEInput.html b/docs/interfaces/ChatSSEInput.html index ae55ae2..0a5126c 100644 --- a/docs/interfaces/ChatSSEInput.html +++ b/docs/interfaces/ChatSSEInput.html @@ -1,5 +1,5 @@ ChatSSEInput | predictionguard

Interface ChatSSEInput

ChatSSEInput represents the full potential input options for SSE chat.

-
interface ChatSSEInput {
    maxTokens: number;
    messages: ChatInputMessage[];
    model: string;
    onMessage: ((event: null | ChatSSE, err: null | Error) => void);
    temperature: number;
    topK: number;
    topP: number;
}

Properties

interface ChatSSEInput {
    maxTokens: number;
    messages: ChatInputMessage[];
    model: string;
    onMessage: ((event: null | ChatSSE, err: null | Error) => void);
    temperature: number;
    topK: number;
    topP: number;
}

Properties

Properties

maxTokens: number

maxTokens represents the max number of tokens to return.

-
messages: ChatInputMessage[]

messages represents the set of messages to process.

-
model: string

model represents the model to use.

-
onMessage: ((event: null | ChatSSE, err: null | Error) => void)

onMessage represents a function that will receive the messages.

-
temperature: number

temperature represents the randomness in GPT's output.

-
topK: number

topK represents the variability of the generated text.

-
topP: number

topP represents the diversity of the generated text.

-
+
messages: ChatInputMessage[]

messages represents the set of messages to process.

+
model: string

model represents the model to use.

+
onMessage: ((event: null | ChatSSE, err: null | Error) => void)

onMessage represents a function that will receive the messages.

+
temperature: number

temperature represents the randomness in GPT's output.

+
topK: number

topK represents the variability of the generated text.

+
topP: number

topP represents the diversity of the generated text.

+
diff --git a/docs/interfaces/ChatVision.html b/docs/interfaces/ChatVision.html index 1c26fc1..2b098b1 100644 --- a/docs/interfaces/ChatVision.html +++ b/docs/interfaces/ChatVision.html @@ -1,15 +1,15 @@ ChatVision | predictionguard

Interface ChatVision

ChatVision represents the result for the vision call.

-
interface ChatVision {
    choices: ChatVisionChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

interface ChatVision {
    choices: ChatVisionChoice[];
    created: number;
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

choices: ChatVisionChoice[]

choices represents the collection of choices to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
model: string

model represents the model used for generating the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
model: string

model represents the model used for generating the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/ChatVisionChoice.html b/docs/interfaces/ChatVisionChoice.html index 245abc3..87eb7f7 100644 --- a/docs/interfaces/ChatVisionChoice.html +++ b/docs/interfaces/ChatVisionChoice.html @@ -1,7 +1,7 @@ ChatVisionChoice | predictionguard

Interface ChatVisionChoice

ChatVisionChoice represents a choice for the vision call.

-
interface ChatVisionChoice {
    index: number;
    message: ChatVisionMessage;
}

Properties

interface ChatVisionChoice {
    index: number;
    message: ChatVisionMessage;
}

Properties

Properties

index: number

index represents the index position in the collection for this choice.

-

message represents a response for this choice.

-
+

message represents a response for this choice.

+
diff --git a/docs/interfaces/ChatVisionInput.html b/docs/interfaces/ChatVisionInput.html index f57f4e6..d8eb80e 100644 --- a/docs/interfaces/ChatVisionInput.html +++ b/docs/interfaces/ChatVisionInput.html @@ -1,5 +1,5 @@ ChatVisionInput | predictionguard

Interface ChatVisionInput

ChatVisionInput represents the full potential input options for Vision chat.

-
interface ChatVisionInput {
    image: Base64Encoder;
    maxTokens: number;
    model: string;
    question: string;
    role: Roles;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

interface ChatVisionInput {
    image: Base64Encoder;
    maxTokens: number;
    model: string;
    question: string;
    role: Roles;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

image maxTokens model question @@ -8,11 +8,11 @@ topK topP

Properties

image represents an object that knows how to retrieve an image.

-
maxTokens: number

maxTokens represents the max number of tokens to return.

-
model: string

model represents the model to use.

-
question: string

question represents the question about the image.

-
role: Roles

role represents the role of the sender (user or assistant).

-
temperature: number

temperature represents the randomness in GPT's output.

-
topK: number

topK represents the variability of the generated text.

-
topP: number

topP represents the diversity of the generated text.

-
+
maxTokens: number

maxTokens represents the max number of tokens to return.

+
model: string

model represents the model to use.

+
question: string

question represents the question about the image.

+
role: Roles

role represents the role of the sender (user or assistant).

+
temperature: number

temperature represents the randomness in GPT's output.

+
topK: number

topK represents the variability of the generated text.

+
topP: number

topP represents the diversity of the generated text.

+
diff --git a/docs/interfaces/ChatVisionMessage.html b/docs/interfaces/ChatVisionMessage.html index 72bbf63..8de876f 100644 --- a/docs/interfaces/ChatVisionMessage.html +++ b/docs/interfaces/ChatVisionMessage.html @@ -1,8 +1,6 @@ ChatVisionMessage | predictionguard

Interface ChatVisionMessage

ChatVisionMessage represents content for the vision call.

-
interface ChatVisionMessage {
    content: string;
    output: string;
    role: Roles;
}

Properties

interface ChatVisionMessage {
    content: string;
    role: Roles;
}

Properties

Properties

content: string

content represents the response for this message.

-
output: string

output represents the output for this message.

-
role: Roles

role represents the role of the sender (user or assistant).

-
+
role: Roles

role represents the role of the sender (user or assistant).

+
diff --git a/docs/interfaces/Completion.html b/docs/interfaces/Completion.html index a43f0a3..17c4005 100644 --- a/docs/interfaces/Completion.html +++ b/docs/interfaces/Completion.html @@ -1,14 +1,14 @@ Completion | predictionguard

Interface Completion

Completion represents an object that contains the result for the completion call.

-
interface Completion {
    choices: CompletionChoice[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Completion {
    choices: CompletionChoice[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

Methods

Properties

choices: CompletionChoice[]

choices represents the collection of choices to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/CompletionChoice.html b/docs/interfaces/CompletionChoice.html index e76df85..81aeba8 100644 --- a/docs/interfaces/CompletionChoice.html +++ b/docs/interfaces/CompletionChoice.html @@ -1,7 +1,7 @@ CompletionChoice | predictionguard

Interface CompletionChoice

Choice represents an object that contains a result choice.

-
interface CompletionChoice {
    index: number;
    text: string;
}

Properties

interface CompletionChoice {
    index: number;
    text: string;
}

Properties

Properties

index: number

index represents the index position in the collection for this choice.

-
text: string

text represents the generated text for this choice.

-
+
text: string

text represents the generated text for this choice.

+
diff --git a/docs/interfaces/CompletionInput.html b/docs/interfaces/CompletionInput.html index 21d22d8..2285721 100644 --- a/docs/interfaces/CompletionInput.html +++ b/docs/interfaces/CompletionInput.html @@ -1,14 +1,14 @@ CompletionInput | predictionguard

Interface CompletionInput

CompletionInput represents the full potential input options for completion.

-
interface CompletionInput {
    maxTokens: number;
    model: string;
    prompt: string;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

interface CompletionInput {
    maxTokens: number;
    model: string;
    prompt: string;
    temperature: number;
    topK: number;
    topP: number;
}

Properties

maxTokens: number

maxTokens represents the max number of tokens to return.

-
model: string

model represents the model to use.

-
prompt: string

prompt represents the prompt to process.

-
temperature: number

temperature represents the randomness in GPT's output.

-
topK: number

topK represents the variability of the generated text.

-
topP: number

topP represents the diversity of the generated text.

-
+
model: string

model represents the model to use.

+
prompt: string

prompt represents the prompt to process.

+
temperature: number

temperature represents the randomness in GPT's output.

+
topK: number

topK represents the variability of the generated text.

+
topP: number

topP represents the diversity of the generated text.

+
diff --git a/docs/interfaces/Embedding.html b/docs/interfaces/Embedding.html index 158b0e7..727d340 100644 --- a/docs/interfaces/Embedding.html +++ b/docs/interfaces/Embedding.html @@ -1,5 +1,5 @@ Embedding | predictionguard

Interface Embedding

Embedding represents the result for the embedding call.

-
interface Embedding {
    created: number;
    data: EmbeddingData[];
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Embedding {
    created: number;
    data: EmbeddingData[];
    id: string;
    model: string;
    object: string;
    createdDate(): Date;
}

Properties

created data id model @@ -7,9 +7,9 @@

Methods

Properties

created: number

created represents the unix timestamp for when the request was received.

-

EmbeddingData represents the collection of vector points.

-
id: string

id represents a unique identifier for the result.

-
model: string

model represents the model used for generating the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+

EmbeddingData represents the collection of vector points.

+
id: string

id represents a unique identifier for the result.

+
model: string

model represents the model used for generating the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/EmbeddingData.html b/docs/interfaces/EmbeddingData.html index 3cba4e0..bb44c41 100644 --- a/docs/interfaces/EmbeddingData.html +++ b/docs/interfaces/EmbeddingData.html @@ -1,8 +1,8 @@ EmbeddingData | predictionguard

Interface EmbeddingData

EmbeddingData represents the vector data points.

-
interface EmbeddingData {
    embedding: number[];
    index: number;
    object: string;
}

Properties

interface EmbeddingData {
    embedding: number[];
    index: number;
    object: string;
}

Properties

Properties

embedding: number[]
index: number

index represents the index position in the collection for +

Properties

embedding: number[]
index: number

index represents the index position in the collection for this choice.

-
object: string

object represent the type of the result document.

-
+
object: string

object represent the type of the result document.

+
diff --git a/docs/interfaces/EmbeddingInput.html b/docs/interfaces/EmbeddingInput.html index 60167cf..8f6379c 100644 --- a/docs/interfaces/EmbeddingInput.html +++ b/docs/interfaces/EmbeddingInput.html @@ -1,6 +1,6 @@ EmbeddingInput | predictionguard

Interface EmbeddingInput

EmbeddingInput represents the input to generate embeddings.

-
interface EmbeddingInput {
    image: Base64Encoder;
    text: string;
}

Properties

interface EmbeddingInput {
    image: Base64Encoder;
    text: string;
}

Properties

Properties

image represents an image to vectorize.

-
text: string

text represents text to vectorize.

-
+
text: string

text represents text to vectorize.

+
diff --git a/docs/interfaces/Factuality.html b/docs/interfaces/Factuality.html index 489b782..7fa16e9 100644 --- a/docs/interfaces/Factuality.html +++ b/docs/interfaces/Factuality.html @@ -1,14 +1,14 @@ Factuality | predictionguard

Interface Factuality

Factuality represents an object that contains the result for the factuality call.

-
interface Factuality {
    checks: FactualityCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Factuality {
    checks: FactualityCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

Methods

Properties

checks: FactualityCheck[]

checks represents the collection of checks to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/FactualityCheck.html b/docs/interfaces/FactualityCheck.html index 813a855..44f0c2e 100644 --- a/docs/interfaces/FactualityCheck.html +++ b/docs/interfaces/FactualityCheck.html @@ -1,7 +1,7 @@ FactualityCheck | predictionguard

Interface FactualityCheck

FactualityCheck represents an object that contains a check choice.

-
interface FactualityCheck {
    index: number;
    score: number;
}

Properties

interface FactualityCheck {
    index: number;
    score: number;
}

Properties

Properties

index: number

index represents the index position in the collection for this checks.

-
score: number

score represents the score for this check.

-
+
score: number

score represents the score for this check.

+
diff --git a/docs/interfaces/Injection.html b/docs/interfaces/Injection.html index 9150813..641dd3a 100644 --- a/docs/interfaces/Injection.html +++ b/docs/interfaces/Injection.html @@ -1,14 +1,14 @@ Injection | predictionguard

Interface Injection

Injection represents an object that contains the result for the injection call.

-
interface Injection {
    checks: InjectionCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Injection {
    checks: InjectionCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

Methods

Properties

checks: InjectionCheck[]

checks represents the collection of checks to choose from.

-
created: number

created represents the unix timestamp for when the result was +

created: number

created represents the unix timestamp for when the result was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/InjectionCheck.html b/docs/interfaces/InjectionCheck.html index 8aff9be..2ac9f50 100644 --- a/docs/interfaces/InjectionCheck.html +++ b/docs/interfaces/InjectionCheck.html @@ -1,10 +1,10 @@ InjectionCheck | predictionguard

Interface InjectionCheck

InjectionCheck represents an object that contains a check choice.

-
interface InjectionCheck {
    index: number;
    probability: number;
    status: string;
}

Properties

interface InjectionCheck {
    index: number;
    probability: number;
    status: string;
}

Properties

index: number

index represents the index position in the collection for this checks.

-
probability: number

probability represents the probability of a potential injection +

probability: number

probability represents the probability of a potential injection attack.

-
status: string

status represents the status for this check.

-
+
status: string

status represents the status for this check.

+
diff --git a/docs/interfaces/ReplacePII.html b/docs/interfaces/ReplacePII.html index b631382..773eb3f 100644 --- a/docs/interfaces/ReplacePII.html +++ b/docs/interfaces/ReplacePII.html @@ -1,14 +1,14 @@ ReplacePII | predictionguard

Interface ReplacePII

ReplacePII represents an object that contains the result for the replacepi call.

-
interface ReplacePII {
    checks: ReplacePIICheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

interface ReplacePII {
    checks: ReplacePIICheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

Methods

Properties

checks: ReplacePIICheck[]

checks represents the collection of checks to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/ReplacePIICheck.html b/docs/interfaces/ReplacePIICheck.html index 04662dc..2a760db 100644 --- a/docs/interfaces/ReplacePIICheck.html +++ b/docs/interfaces/ReplacePIICheck.html @@ -1,9 +1,9 @@ ReplacePIICheck | predictionguard

Interface ReplacePIICheck

ReplacePIICheck represents an object that contains a check choice.

-
interface ReplacePIICheck {
    index: number;
    new_prompt: string;
    status: string;
}

Properties

interface ReplacePIICheck {
    index: number;
    new_prompt: string;
    status: string;
}

Properties

index: number

index represents the index position in the collection for this checks.

-
new_prompt: string

new_prompt represents the text with replaced personal information.

-
status: string

status represents the status for this check.

-
+
new_prompt: string

new_prompt represents the text with replaced personal information.

+
status: string

status represents the status for this check.

+
diff --git a/docs/interfaces/Toxicity.html b/docs/interfaces/Toxicity.html index 1facc45..41e0920 100644 --- a/docs/interfaces/Toxicity.html +++ b/docs/interfaces/Toxicity.html @@ -1,14 +1,14 @@ Toxicity | predictionguard

Interface Toxicity

Toxicity represents an object that contains the result for the toxicity call.

-
interface Toxicity {
    checks: ToxicityCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

interface Toxicity {
    checks: ToxicityCheck[];
    created: number;
    id: string;
    object: string;
    createdDate(): Date;
}

Properties

Methods

Properties

checks: ToxicityCheck[]

checks represents the collection of checks to choose from.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/ToxicityCheck.html b/docs/interfaces/ToxicityCheck.html index 235fcdb..0cf4e10 100644 --- a/docs/interfaces/ToxicityCheck.html +++ b/docs/interfaces/ToxicityCheck.html @@ -1,7 +1,7 @@ ToxicityCheck | predictionguard

Interface ToxicityCheck

ToxicityCheck represents an object that contains a check choice.

-
interface ToxicityCheck {
    index: number;
    score: number;
}

Properties

interface ToxicityCheck {
    index: number;
    score: number;
}

Properties

Properties

index: number

index represents the index position in the collection for this checks.

-
score: number

score represents the score for the provided text.

-
+
score: number

score represents the score for the provided text.

+
diff --git a/docs/interfaces/Translate.html b/docs/interfaces/Translate.html index 8bec096..fdf1bdb 100644 --- a/docs/interfaces/Translate.html +++ b/docs/interfaces/Translate.html @@ -1,6 +1,6 @@ Translate | predictionguard

Interface Translate

Translate represents an object that contains the result for the translate call.

-
interface Translate {
    best_score: number;
    best_translation: string;
    best_translation_model: string;
    created: number;
    id: string;
    object: string;
    translations: Translation[];
    createdDate(): Date;
}

Properties

interface Translate {
    best_score: number;
    best_translation: string;
    best_translation_model: string;
    created: number;
    id: string;
    object: string;
    translations: Translation[];
    createdDate(): Date;
}

Properties

best_score: number

best_score represents the best score for the best translation.

-
best_translation: string

best_translation represents the best translation of the input text.

-
best_translation_model: string

best_translation_model represents the model used for the best +

best_translation: string

best_translation represents the best translation of the input text.

+
best_translation_model: string

best_translation_model represents the model used for the best translation.

-
created: number

created represents the unix timestamp for when the request was +

created: number

created represents the unix timestamp for when the request was received.

-
id: string

id represents a unique identifier for the result.

-
object: string

object represent the type of the result document.

-
translations: Translation[]

translations represents the collection of translations to choose from.

-

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    -

    Returns Date

+
id: string

id represents a unique identifier for the result.

+
object: string

object represent the type of the result document.

+
translations: Translation[]

translations represents the collection of translations to choose from.

+

Methods

  • createdDate converts the created unix timestamp into a JS Date.

    +

    Returns Date

diff --git a/docs/interfaces/Translation.html b/docs/interfaces/Translation.html index 8fc57cf..eb74e85 100644 --- a/docs/interfaces/Translation.html +++ b/docs/interfaces/Translation.html @@ -1,10 +1,10 @@ Translation | predictionguard

Interface Translation

Translation represents an object that contains a translation choice.

-
interface Translation {
    model: string;
    score: number;
    status: string;
    translation: string;
}

Properties

interface Translation {
    model: string;
    score: number;
    status: string;
    translation: string;
}

Properties

model: string

model represents the model that was used for this translation.

-
score: number

score represents the quality score for this translation.

-
status: string

status represents the status of using the model for this translation.

-
translation: string

translation represents the translation.

-
+
score: number

score represents the quality score for this translation.

+
status: string

status represents the status of using the model for this translation.

+
translation: string

translation represents the translation.

+
diff --git a/docs/modules.html b/docs/modules.html index 270ee29..c76a277 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -10,6 +10,7 @@ ChatChoice ChatInput ChatInputMessage +ChatInputMulti ChatInputOptions ChatMessage ChatSSE diff --git a/examples/chat.js b/examples/chat.js index 3de3b18..06f2c0d 100644 --- a/examples/chat.js +++ b/examples/chat.js @@ -5,12 +5,7 @@ const client = new pg.Client('https://api.predictionguard.com', process.env.PGKE async function Chat() { const input = { model: 'Neural-Chat-7B', - messages: [ - { - role: pg.Roles.User, - content: 'How do you feel about the world in general', - }, - ], + messages: 'How do you feel about the world in general', maxTokens: 1000, temperature: 0.1, topP: 0.1, diff --git a/examples/chat_multi.js b/examples/chat_multi.js new file mode 100644 index 0000000..2c3dc3e --- /dev/null +++ b/examples/chat_multi.js @@ -0,0 +1,35 @@ +import * as pg from '../dist/index.js'; + +const client = new pg.Client('https://api.predictionguard.com', process.env.PGKEY); + +async function ChatMulti() { + const input = { + model: 'Neural-Chat-7B', + messages: [ + { + role: pg.Roles.User, + content: 'How do you feel about the world in general', + }, + ], + maxTokens: 1000, + temperature: 0.1, + topP: 0.1, + topK: 50, + options: { + factuality: true, + toxicity: true, + pii: pg.PIIs.Replace, + piiReplaceMethod: pg.ReplaceMethods.Random, + }, + }; + + var [result, err] = await client.Chat(input); + if (err != null) { + console.log('ERROR:' + err.error); + return; + } + + console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content); +} + +ChatMulti(); diff --git a/makefile b/makefile index fab7bec..877f77d 100644 --- a/makefile +++ b/makefile @@ -40,6 +40,30 @@ curl-chat: curl -i -X POST https://api.predictionguard.com/chat/completions \ -H "Authorization: Bearer ${PGKEY}" \ -H "Content-Type: application/json" \ + -d '{ \ + "model": "Neural-Chat-7B", \ + "messages": "How do you feel about the world in general", \ + "max_tokens": 1000, \ + "temperature": 1.1, \ + "top_p": 0.1, \ + "top_k": 50, \ + "output": { \ + "factuality": true, \ + "toxicity": true \ + }, \ + "input": { \ + "pii": "replace", \ + "pii_replace_method": "random" \ + } \ + }' + +js-chat: compile-ts + node --env-file=.env examples/chat.js + +curl-chat-multi: + curl -i -X POST https://api.predictionguard.com/chat/completions \ + -H "Authorization: Bearer ${PGKEY}" \ + -H "Content-Type: application/json" \ -d '{ \ "model": "Neural-Chat-7B", \ "messages": [ \ @@ -51,7 +75,7 @@ curl-chat: "max_tokens": 1000, \ "temperature": 1.1, \ "top_p": 0.1, \ - "top_k": 50.0, \ + "top_k": 50, \ "output": { \ "factuality": true, \ "toxicity": true \ @@ -62,8 +86,8 @@ curl-chat: } \ }' -js-chat: compile-ts - node --env-file=.env examples/chat.js +js-chat-multi: compile-ts + node --env-file=.env examples/chat_multi.js curl-chat-sse: curl -i -X POST https://api.predictionguard.com/chat/completions \ diff --git a/package-lock.json b/package-lock.json index e392417..cb86d31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "predictionguard", - "version": "0.22.0", + "version": "0.23.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "predictionguard", - "version": "0.22.0", + "version": "0.23.0", "license": "Apache 2.0", "dependencies": { "fetch-sse": "^1.0.23", diff --git a/package.json b/package.json index 375c42f..80d0a80 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "type": "module", "name": "predictionguard", "author": "Prediction Guard", - "version": "0.22.0", + "version": "0.23.0", "license": "Apache 2.0", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/api_client.ts b/src/api_client.ts index 76129fa..ab090da 100644 --- a/src/api_client.ts +++ b/src/api_client.ts @@ -2,7 +2,7 @@ import fetch from 'node-fetch'; import * as sse from 'fetch-sse'; import * as model from './api_model.js'; -const version = '0.22.0'; +const version = '0.23.0'; /** Client provides access the PredictionGuard API. */ export class Client { @@ -35,6 +35,31 @@ export class Client { * async function Chat() { * const input = { * model: 'Neural-Chat-7B', + * messages: 'How do you feel about the world in general', + * maxTokens: 1000, + * temperature: 0.1, + * topP: 0.1, + * topK: 50, + * options: { + * factuality: true, + * toxicity: true, + * pii: pg.PIIs.Replace, + * piiReplaceMethod: pg.ReplaceMethods.Random, + * }, + * }; + * + * var [result, err] = await client.Chat(input); + * if (err != null) { + * console.log('ERROR:' + err.error); + * return; + * } + * + * console.log('RESULT:' + result.createdDate() + ': ' + result.model + ': ' + result.choices[0].message.content); + * } + * + * async function ChatMulti() { + * const input = { + * model: 'Neural-Chat-7B', * messages: [ * { * role: pg.Roles.User, @@ -63,15 +88,16 @@ export class Client { * } * * Chat(); + * ChatMulti(); * ``` * - * @param {model.ChatInput} input - input represents the entire set of + * @param {model.ChatInput | model.ChatInputMulti} input - input represents the entire set of * possible input for the Chat call. * * @returns - A Promise with a Chat object and an Error object if * the error is not null. */ - async Chat(input: model.ChatInput): Promise<[model.Chat, model.Error | null]> { + async Chat(input: model.ChatInput | model.ChatInputMulti): Promise<[model.Chat, model.Error | null]> { const zero: model.Chat = { id: '', object: '', diff --git a/src/api_model.ts b/src/api_model.ts index 0d9abc3..2609d5b 100644 --- a/src/api_model.ts +++ b/src/api_model.ts @@ -147,6 +147,30 @@ export interface ChatInput { /** model represents the model to use. */ model: string; + /** message represents a message to process. */ + messages: string; + + /** maxTokens represents the max number of tokens to return. */ + maxTokens: number; + + /** temperature represents the randomness in GPT's output. */ + temperature: number; + + /** topP represents the diversity of the generated text. */ + topP: number; + + /** topK represents the variability of the generated text. */ + topK: number; + + /** options represents a set of optional parameters. */ + options: ChatInputOptions; +} + +/** ChatInputMulti represents the full potential input options for chat. */ +export interface ChatInputMulti { + /** model represents the model to use. */ + model: string; + /** messages represents the set of messages to process. */ messages: ChatInputMessage[]; @@ -169,14 +193,11 @@ export interface ChatInput { /** ChatMessage represents an object that contains the content and a role. It * can be used for input and returned as part of the response. */ export interface ChatMessage { - /** content represents the content of the message. */ - content: string; - /** role represents the role of the sender (user or assistant). */ role: Roles; - /** output represents the output for this message. */ - output: string; + /** content represents the content of the message. */ + content: string; } /** ChatChoice represents an object that contains a result choice. */ @@ -323,9 +344,6 @@ export interface ChatVisionMessage { /** content represents the response for this message. */ content: string; - - /** output represents the output for this message. */ - output: string; } /** ChatVisionChoice represents a choice for the vision call. */ diff --git a/test/api_test.js b/test/api_test.js index 387f98f..21639bc 100644 --- a/test/api_test.js +++ b/test/api_test.js @@ -148,6 +148,10 @@ describe('Test_Client', () => { await testChatBasic(); }); + it('chat-multi', async () => { + await testChatMulti(); + }); + it('chat-vision', async () => { await testChatVision(); }); @@ -297,6 +301,34 @@ async function testChatBasic() { assert.equal(got, exp); } +async function testChatMulti() { + const client = new pg.Client('http://localhost:8080', 'any key'); + + const input = { + model: 'Neural-Chat-7B', + messages: 'How do you feel about the world in general', + maxTokens: 1000, + temperature: 0.1, + topP: 0.1, + options: { + factuality: true, + toxicity: true, + pii: pg.PIIs.Replace, + piiReplaceMethod: pg.ReplaceMethods.Random, + }, + }; + + var [result, err] = await client.Chat(input); + if (err != null) { + assert.fail('ERROR:' + err.error); + } + + const got = JSON.stringify(result); + const exp = JSON.stringify(chatResp); + + assert.equal(got, exp); +} + async function testChatVision() { const client = new pg.Client('http://localhost:8080', 'any key');