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 @@
apiKey represents PG api key.
Chat generates chat completions based on a conversation history.
-input represents the entire set of +
input represents the entire set of possible input for the Chat call.
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();
+Example
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
- ChatSSE(input): Promise<null | Error>
ChatSSE generates a stream of chat completions based on a
+
ChatSSE
- ChatSSE(input): Promise<null | Error>
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 @@
Example
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();
-Chat Vision
- Chat
Vision(input): Promise<[ChatVision, null | Error]> ChatVision generates answers a question about an image.
+
Chat Vision
- Chat
Vision(input): Promise<[ChatVision, null | Error]> 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 @@
Example
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
- Completion(input): Promise<[Completion, null | Error]>
Completion generates text completions based on the provided input.
+
Completion
- Completion(input): Promise<[Completion, null | Error]>
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 @@
Example
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
Embedding
- Embedding(model, input): Promise<[Embedding, null | Error]>
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 @@
Example
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
- Factuality(reference, text): Promise<[Factuality, null | Error]>
Factuality checks the factuality of a given text compared to a reference.
+
Factuality
- Factuality(reference, text): Promise<[Factuality, null | Error]>
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 @@
Example
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();
-Health Check
- Health
Check(): Promise<[string, null | Error]> HealthCheck validates the PG API Service is available.
+
Health Check
- Health
Check(): Promise<[string, null | Error]> 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 @@
Example
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
Injection
- Injection(prompt): Promise<[Injection, null | Error]>
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 @@
Example
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();
-
Protected
Raw Do Get
- Raw
Do Get(endpoint): Promise<[any, null | Error]> RawDoGet performs a raw GET call.
+
Protected
Raw Do Get
- Raw
Do Get(endpoint): Promise<[any, null | Error]> 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.
-
Protected
Raw Do Post
- Raw
Do Post(endpoint, body): Promise<[any, null | Error]> RawDoPost performs a raw POST call.
+Protected
Raw Do Post
- Raw
Do Post(endpoint, body): Promise<[any, null | Error]> 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.
-Protected
Raw DoSSEPost
- Raw
DoSSEPost(endpoint, body, onMessage): Promise<null | Error> RawDoSSEPost performs a raw POST call with SSE support.
+Protected
Raw DoSSEPost
- Raw
DoSSEPost(endpoint, body, onMessage): Promise<null | Error> 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
- ReplacePII(replaceMethod, prompt): Promise<[ReplacePII, null | Error]>
ReplacePII replaces personal information such as names, SSNs, and
+
ReplacePII
- ReplacePII(replaceMethod, prompt): Promise<[ReplacePII, null | Error]>
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 @@
Example
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
Toxicity
- Toxicity(text): Promise<[Toxicity, null | Error]>
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 @@
Example
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
Translate
- Translate(text, sourceLang, targetLang, useThirdPartyEngine): Promise<[Translate, null | Error]>
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 @@
Example
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();
-
url represents the transport and domain:port.