Skip to content

Instantly share code, notes, and snippets.

@diego-suarez
diego-suarez / on_message.js
Last active June 16, 2023 14:16
on_message.js
app.message(async ({ message, say, ack, client }) => {
if (!message.type === 'message' || message.subtype) {
return;
}
history.push({ role: "user", content: message.text });
let responseText = "";
const response = await getOpenAiResponse();
if (response.function_call) {
@diego-suarez
diego-suarez / call_function.js
Last active June 16, 2023 14:17
call_function.js
function callFunction(function_call) {
const func = functions.find((func) => func.schema.name === function_call.name);
const args = JSON.parse(function_call.arguments);
return func.function(args);
}
@diego-suarez
diego-suarez / text_response.js
Last active June 21, 2023 13:03
text_response.js
{
role: 'assistant',
content: 'Hi, how can I help you today?'
}
@diego-suarez
diego-suarez / function_call_response.js
Last active June 16, 2023 14:18
function_call_response.js
{
role: 'assistant',
content: null,
function_call: {
name: 'addTodoItem',
arguments: '{\n "item": "Buy bread"\n}'
}
}
@diego-suarez
diego-suarez / get_response.js
Last active June 16, 2023 14:18
get_response.js
async function getOpenAiResponse() {
const payload = {
model: openaiChatModel,
messages: [
{
role: 'system', content: 'You are a chat assistant that helps people with their to-do list.',
},
...history,
],
functions: functions.map((func) => func.schema),
@diego-suarez
diego-suarez / setup_server.js
Last active June 16, 2023 14:18
setup_server.js
require('dotenv').config();
const { Configuration, OpenAIApi } = require("openai");
// ... OpenAi and Slack Configuration setup ...
const functions = require('./functions');
// ... Rest of the code …
@diego-suarez
diego-suarez / functions.js
Created June 15, 2023 16:45
functions.js
const { getTodoList, addTodoItem, removeTodoItem } = require('./todo_list');
const availableFunctions = [
{
function: getTodoList,
schema: {
name: "getTodoList",
description: "Lists the items on your To-Do list",
parameters: { type: "object", properties: {} },
}
@diego-suarez
diego-suarez / todo_list.js
Created June 15, 2023 16:44
todo_list.js
const todoList = [];
function getTodoList() {
if (todoList.length === 0) {
return "You have no To-Do's!";
}
return `You have the following To-Do's:\n- ${todoList.join('\n- ')}`;
}
function addTodoItem({ item }) {
@diego-suarez
diego-suarez / prompt.json
Created April 21, 2023 18:25
GPT-4 system prompt example
[
{
"role": "system",
"content": "You will be asked for travel recomendations by a tourist. Answer as you were a travel guide and give no more than 3 recommendation options per answer. Just answer with the options and don't give any introduction. Use markdown to format your response."
},
{
"role": "user",
"content": "Where can I eat sushi in New York?"
}
]