class AIService extends Context.Tag('AIService')<AIService, {
generateResponse: (
messages: Messages,
) => Effect.Effect<{steps: Array<{text: string}>}>
}>() {}
const AILayer = Layer.effect(
AIService,
Effect.gen(function* () {
const aiModel = yield* AiLanguageModel;
const toolkit = yield* SalonToolkit;
return {
generateResponse: () => Effect.gen(function* () {
const response = yield* aiModel.generateText({
system: prompt,
prompt: [
new AiInput.UserMessage({
parts: [new AiInput.TextPart({text: "I want to book a haircut"})]
})
],
toolkit
})
if(Math.random() > 0.5) {
yield* Effect.fail(new DatabaseError({operation: '', message: '',cause: ''}))
}
yield* Effect.logInfo(response)
return { steps: []}
})
}
})
)
class AIService extends Context.Tag('AIService')<AIService, {
generateResponse: (
messages: Messages,
) => Effect.Effect<{steps: Array<{text: string}>}>
}>() {}
const AILayer = Layer.effect(
AIService,
Effect.gen(function* () {
const aiModel = yield* AiLanguageModel;
const toolkit = yield* SalonToolkit;
return {
generateResponse: () => Effect.gen(function* () {
const response = yield* aiModel.generateText({
system: prompt,
prompt: [
new AiInput.UserMessage({
parts: [new AiInput.TextPart({text: "I want to book a haircut"})]
})
],
toolkit
})
if(Math.random() > 0.5) {
yield* Effect.fail(new DatabaseError({operation: '', message: '',cause: ''}))
}
yield* Effect.logInfo(response)
return { steps: []}
})
}
})
)