Skip to content

Commit

Permalink
fix perplexity transformMessageLog
Browse files Browse the repository at this point in the history
  • Loading branch information
chadlangston committed Aug 3, 2024
1 parent b3d7b60 commit 0d359f7
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 5 deletions.
7 changes: 3 additions & 4 deletions ApiClientOpenAI.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ const ApiClient = require('./ApiClient');
const OpenAI = require('openai');

class ApiClientOpenAI extends ApiClient {
constructor(apiKey, messageLog, baseURL='https://api.openai.com/v1/') {
constructor(apiKey, messageLog) {
super(apiKey, messageLog);
this.baseURL = baseURL;
this.openai = new OpenAI({ baseURL: this.baseURL, apiKey: this.apiKey });
this.openai = new OpenAI({ apiKey: this.apiKey });
}

async sendMessage(model) {
const rawMessageLog = this.messageLog.getRawMessageLog();
const formattedMessageLog = this.transformMessageLog(rawMessageLog);
//console.log(JSON.stringify(formattedMessageLog, null, 2));
console.log(JSON.stringify(formattedMessageLog, null, 2));

// Import the ora module
const ora = (await import('ora')).default;
Expand Down
92 changes: 92 additions & 0 deletions ApiClientPerplexity.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
const ApiClient = require('./ApiClient');
const OpenAI = require('openai');

class ApiClientPerplexity extends ApiClient {
constructor(apiKey, messageLog) {
super(apiKey, messageLog);
this.baseURL = "https://api.perplexity.ai";
this.openai = new OpenAI({ baseURL: this.baseURL, apiKey: this.apiKey });
}

async sendMessage(model) {
const rawMessageLog = this.messageLog.getRawMessageLog();
const formattedMessageLog = this.transformMessageLog(rawMessageLog);
//console.log(JSON.stringify(formattedMessageLog, null, 2));

// Import the ora module
const ora = (await import('ora')).default;

// Create a new ora instance
const spinner = ora().start();

const response = await this.openai.chat.completions.create({
model: model,
max_tokens: 4096,
temperature: 0,
messages: formattedMessageLog,
});

// Log the entire response
console.log('\n\nAPI Response:', response);

// Stop the spinner
spinner.stop();

// Return the response
return response.choices[0].message.content;
}

transformMessageLog(rawMessageLog) {
let transformedMessageLog = [];
let userContent = '';

for (let i = 0; i < rawMessageLog.length; i++) {
let message = rawMessageLog[i];

if (message.role === 'user') {
userContent += message.content;
}
else {
if (userContent) {
transformedMessageLog.push({
role: 'user',
content: [{
type: 'text',
text: userContent
}]
});
userContent = '';
}
transformedMessageLog.push({
role: 'assistant',
content: [{
type: message.type,
text: message.content
}]
});
}
}

// if the last message was a user message, add it to the transformed message log
if (userContent) {
transformedMessageLog.push({
role: 'user',
content: userContent
});
}

// Add a continue message
//transformedMessageLog.push({
// role: 'assistant',
// content: [{
// type: 'text',
// text: 'continue'
// }]
//});

console.log(JSON.stringify(transformedMessageLog, null, 2));
return transformedMessageLog;
}
}

module.exports = ApiClientPerplexity;
3 changes: 2 additions & 1 deletion Main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const ChatSession = require('./ChatSession');
const ApiClientOpenAi = require('./ApiClientOpenAI');
const ApiClientGoogle = require('./ApiClientGoogle');
const ApiClientAnthropic = require('./ApiClientAnthropic');
const ApiClientPerplexity = require('./ApiClientPerplexity');
const ApiClientMistral = require('./ApiClientMistral');
const MessageLog = require('./MessageLog');
const DataProcessor = require('./ProcessorData');
Expand All @@ -29,7 +30,7 @@ class Main {
this.model = "claude-3-5-sonnet-20240620";
break;
case '4':
this.apiClient = new ApiClientOpenAi(process.env.PERPLEXITY_API_KEY, this.messageLog, "https://api.perplexity.ai");
this.apiClient = new ApiClientPerplexity(process.env.PERPLEXITY_API_KEY, this.messageLog);
this.model = "llama-3.1-sonar-large-128k-chat";
break;
case '5':
Expand Down

0 comments on commit 0d359f7

Please sign in to comment.