Skip to content

Commit fd86934

Browse files
committed
feat: add method to list models
1 parent 702618f commit fd86934

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

src/backend/src/modules/puterai/AIInterfaceService.js

+5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ class AIInterfaceService extends BaseService {
2828
col_interfaces.set('puter-chat-completion', {
2929
description: 'Chatbot.',
3030
methods: {
31+
list: {
32+
description: 'List supported models',
33+
result: { type: 'json' },
34+
parameters: {},
35+
},
3136
complete: {
3237
description: 'Get completions for a chat log.',
3338
parameters: {

src/backend/src/modules/puterai/ClaudeService.js

+6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ class ClaudeService extends BaseService {
2626

2727
static IMPLEMENTS = {
2828
['puter-chat-completion']: {
29+
async list () {
30+
return [
31+
'claude-3-5-sonnet-20240620',
32+
'claude-3-haiku-20240307',
33+
];
34+
},
2935
async complete ({ messages, stream, model }) {
3036
const adapted_messages = [];
3137

src/backend/src/modules/puterai/OpenAICompletionService.js

+6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ class OpenAICompletionService extends BaseService {
2323

2424
static IMPLEMENTS = {
2525
['puter-chat-completion']: {
26+
async list () {
27+
return [
28+
'gpt-4o',
29+
'gpt-4o-mini',
30+
];
31+
},
2632
async complete ({ messages, test_mode, stream, model }) {
2733
if ( test_mode ) {
2834
const { LoremIpsum } = require('lorem-ipsum');

src/backend/src/modules/puterai/TogetherAIService.js

+8
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ class TogetherAIService extends BaseService {
2222

2323
static IMPLEMENTS = {
2424
['puter-chat-completion']: {
25+
async list () {
26+
let models = this.modules.kv.get(`${this.kvkey}:models`);
27+
if ( models ) return models;
28+
models = await this.together.models.list();
29+
this.modules.kv.set(
30+
`${this.kvkey}:models`, models, { EX: 5*60 });
31+
return models;
32+
},
2533
async complete ({ messages, stream, model }) {
2634
console.log('model?', model);
2735
const completion = await this.together.chat.completions.create({

0 commit comments

Comments
 (0)