Introduce units to llm
This commit is contained in:
@@ -10,12 +10,15 @@ const stravaLink = computed(() => {
|
|||||||
interface FormData {
|
interface FormData {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
language: string;
|
language: string;
|
||||||
|
tone: string;
|
||||||
|
units: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const preferences = useState<FormData>("preferences", () => ({
|
const preferences = useState<FormData>("preferences", () => ({
|
||||||
enabled: false,
|
enabled: false,
|
||||||
language: "English",
|
language: "English",
|
||||||
tone: "Casual",
|
tone: "Casual",
|
||||||
|
units: "Metric",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const { status } = useFetch("/api/preferences", {
|
const { status } = useFetch("/api/preferences", {
|
||||||
@@ -103,6 +106,20 @@ const saveOp = watchPausable(
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</CardField>
|
</CardField>
|
||||||
|
|
||||||
|
<CardField>
|
||||||
|
<template #title> Unit system </template>
|
||||||
|
<template #description>
|
||||||
|
Unit system preference, used in descriptions.
|
||||||
|
</template>
|
||||||
|
<template #value>
|
||||||
|
<USelect
|
||||||
|
class="min-w-28"
|
||||||
|
v-model="preferences.units"
|
||||||
|
:items="units"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</CardField>
|
||||||
</div>
|
</div>
|
||||||
</UCard>
|
</UCard>
|
||||||
</UContainer>
|
</UContainer>
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ export default defineEventHandler(async (event) => {
|
|||||||
|
|
||||||
const [, activity] = await strava!<any>(`/activities/${body.object_id}`);
|
const [, activity] = await strava!<any>(`/activities/${body.object_id}`);
|
||||||
|
|
||||||
|
console.log(user?.preferences.data);
|
||||||
|
|
||||||
const [aiError, aiResponse] = await openai("/responses", {
|
const [aiError, aiResponse] = await openai("/responses", {
|
||||||
body: {
|
body: {
|
||||||
model: "gpt-4o-mini",
|
model: "gpt-4o-mini",
|
||||||
@@ -27,7 +29,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
{
|
{
|
||||||
role: "user",
|
role: "user",
|
||||||
content: `
|
content: `
|
||||||
Generate a title and a short description for my strava activity. Use my preferred language.
|
Generate a title and a short description for my strava activity. Use my preferred language and unit system.
|
||||||
Use ${user?.preferences.data.tone} tone to generate content.
|
Use ${user?.preferences.data.tone} tone to generate content.
|
||||||
Add emojis unless tone is set to minimalist.
|
Add emojis unless tone is set to minimalist.
|
||||||
|
|
||||||
@@ -35,9 +37,13 @@ export default defineEventHandler(async (event) => {
|
|||||||
Sex: ${user?.sex}
|
Sex: ${user?.sex}
|
||||||
Weight: ${user?.weight}
|
Weight: ${user?.weight}
|
||||||
Language: ${user?.preferences.data.language}
|
Language: ${user?.preferences.data.language}
|
||||||
|
Unit system: ${user?.preferences.data.units}
|
||||||
|
|
||||||
Activity notes:
|
Activity notes:
|
||||||
distance is in meters, time is in seconds, don't include average speed. Convert time to hours or minutes, whatever's closer.
|
distance is in meters, time is in seconds, don't include average speed.
|
||||||
|
Convert time to hours or minutes, whatever's closer.
|
||||||
|
Convert distance to larger units when appropriate, keep in mind we don't need much accuracy.
|
||||||
|
|
||||||
The activity data in json format from strava:
|
The activity data in json format from strava:
|
||||||
${JSON.stringify(
|
${JSON.stringify(
|
||||||
omit(activity, [
|
omit(activity, [
|
||||||
@@ -95,14 +101,16 @@ export default defineEventHandler(async (event) => {
|
|||||||
description: string;
|
description: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const promo = "https://ghostwriter.rocks 👻";
|
const promo = "Written by https://ghostwriter.rocks 👻";
|
||||||
|
|
||||||
|
const stravaRequestBody = {
|
||||||
|
name: responseObject.title,
|
||||||
|
description: [responseObject.description, promo].join("\n"),
|
||||||
|
};
|
||||||
|
|
||||||
const [stravaError] = await strava!(`activities/${body.object_id}`, {
|
const [stravaError] = await strava!(`activities/${body.object_id}`, {
|
||||||
method: "PUT",
|
method: "PUT",
|
||||||
body: {
|
body: stravaRequestBody,
|
||||||
name: responseObject.title,
|
|
||||||
description: [responseObject.description, promo].join("\n"),
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (stravaError) {
|
if (stravaError) {
|
||||||
|
|||||||
Reference in New Issue
Block a user