Service

This module contains functionality related to the the service module for augmentation.chainlit.

Service

ChainlitService

Bases: BaseDataLayer

Data layer implementation for Chainlit integration with Langfuse.

Handles persistence of feedback and dataset management through Langfuse.

Source code in src/augmentation/chainlit/service.py
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
class ChainlitService(BaseDataLayer):
    """Data layer implementation for Chainlit integration with Langfuse.

    Handles persistence of feedback and dataset management through Langfuse.
    """

    def __init__(
        self,
        langfuse_dataset_service: LangfuseDatasetService,
        feedback_service: ChainlitFeedbackService,
        manual_dataset: LangfuseDatasetConfiguration,
    ):
        """Initialize the Chainlit service.

        Args:
            langfuse_dataset_service: Service for managing Langfuse datasets.
            feedback_service: Service handling Chainlit feedback.
            manual_dataset: Configuration for manual dataset.
        """
        self.manual_dataset = manual_dataset
        self.feedback_service = feedback_service

        langfuse_dataset_service.create_if_does_not_exist(self.manual_dataset)

    async def upsert_feedback(self, feedback: Feedback) -> bool:
        """Upsert Chainlit feedback to Langfuse database.

        Processes user feedback from Chainlit UI and stores it in Langfuse for
        analysis and dataset management.

        Args:
            feedback: Feedback object containing user feedback details and metadata.

        Returns:
            bool: True if feedback was successfully upserted, False otherwise.
        """
        return await self.feedback_service.upsert(feedback)

    async def build_debug_url(self, *args: Any, **kwargs: Any) -> None:
        """Build a debug URL for Chainlit thread debugging.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def create_element(self, *args: Any, **kwargs: Any) -> None:
        """Create a UI element in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def create_step(self, *args: Any, **kwargs: Any) -> None:
        """Create a conversation step in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def create_user(self, *args: Any, **kwargs: Any) -> None:
        """Create a user record in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def delete_element(self, *args: Any, **kwargs: Any) -> None:
        """Delete a UI element from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def delete_feedback(self, *args: Any, **kwargs: Any) -> None:
        """Delete user feedback from storage.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def delete_step(self, *args: Any, **kwargs: Any) -> None:
        """Delete a conversation step from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def delete_thread(self, *args: Any, **kwargs: Any) -> None:
        """Delete a conversation thread from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def get_element(self, *args: Any, **kwargs: Any) -> None:
        """Retrieve a UI element from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def get_thread(self, *args: Any, **kwargs: Any) -> None:
        """Retrieve a conversation thread from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def get_thread_author(self, *args: Any, **kwargs: Any) -> None:
        """Retrieve the author of a conversation thread.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def get_user(self, *args: Any, **kwargs: Any) -> None:
        """Retrieve a user record from Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def list_threads(self, *args: Any, **kwargs: Any) -> None:
        """List all conversation threads in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def update_step(self, *args: Any, **kwargs: Any) -> None:
        """Update a conversation step in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

    async def update_thread(self, *args: Any, **kwargs: Any) -> None:
        """Update a conversation thread in Chainlit.

        Not implemented in this integration.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.
        """
        pass

__init__(langfuse_dataset_service, feedback_service, manual_dataset)

Initialize the Chainlit service.

Parameters:
  • langfuse_dataset_service (LangfuseDatasetService) –

    Service for managing Langfuse datasets.

  • feedback_service (ChainlitFeedbackService) –

    Service handling Chainlit feedback.

  • manual_dataset (LangfuseDatasetConfiguration) –

    Configuration for manual dataset.

Source code in src/augmentation/chainlit/service.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def __init__(
    self,
    langfuse_dataset_service: LangfuseDatasetService,
    feedback_service: ChainlitFeedbackService,
    manual_dataset: LangfuseDatasetConfiguration,
):
    """Initialize the Chainlit service.

    Args:
        langfuse_dataset_service: Service for managing Langfuse datasets.
        feedback_service: Service handling Chainlit feedback.
        manual_dataset: Configuration for manual dataset.
    """
    self.manual_dataset = manual_dataset
    self.feedback_service = feedback_service

    langfuse_dataset_service.create_if_does_not_exist(self.manual_dataset)

build_debug_url(*args, **kwargs) async

Build a debug URL for Chainlit thread debugging.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
59
60
61
62
63
64
65
66
67
68
async def build_debug_url(self, *args: Any, **kwargs: Any) -> None:
    """Build a debug URL for Chainlit thread debugging.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

create_element(*args, **kwargs) async

Create a UI element in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
70
71
72
73
74
75
76
77
78
79
async def create_element(self, *args: Any, **kwargs: Any) -> None:
    """Create a UI element in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

create_step(*args, **kwargs) async

Create a conversation step in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
81
82
83
84
85
86
87
88
89
90
async def create_step(self, *args: Any, **kwargs: Any) -> None:
    """Create a conversation step in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

create_user(*args, **kwargs) async

Create a user record in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
 92
 93
 94
 95
 96
 97
 98
 99
100
101
async def create_user(self, *args: Any, **kwargs: Any) -> None:
    """Create a user record in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

delete_element(*args, **kwargs) async

Delete a UI element from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
103
104
105
106
107
108
109
110
111
112
async def delete_element(self, *args: Any, **kwargs: Any) -> None:
    """Delete a UI element from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

delete_feedback(*args, **kwargs) async

Delete user feedback from storage.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
114
115
116
117
118
119
120
121
122
123
async def delete_feedback(self, *args: Any, **kwargs: Any) -> None:
    """Delete user feedback from storage.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

delete_step(*args, **kwargs) async

Delete a conversation step from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
125
126
127
128
129
130
131
132
133
134
async def delete_step(self, *args: Any, **kwargs: Any) -> None:
    """Delete a conversation step from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

delete_thread(*args, **kwargs) async

Delete a conversation thread from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
136
137
138
139
140
141
142
143
144
145
async def delete_thread(self, *args: Any, **kwargs: Any) -> None:
    """Delete a conversation thread from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

get_element(*args, **kwargs) async

Retrieve a UI element from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
147
148
149
150
151
152
153
154
155
156
async def get_element(self, *args: Any, **kwargs: Any) -> None:
    """Retrieve a UI element from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

get_thread(*args, **kwargs) async

Retrieve a conversation thread from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
158
159
160
161
162
163
164
165
166
167
async def get_thread(self, *args: Any, **kwargs: Any) -> None:
    """Retrieve a conversation thread from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

get_thread_author(*args, **kwargs) async

Retrieve the author of a conversation thread.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
169
170
171
172
173
174
175
176
177
178
async def get_thread_author(self, *args: Any, **kwargs: Any) -> None:
    """Retrieve the author of a conversation thread.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

get_user(*args, **kwargs) async

Retrieve a user record from Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
180
181
182
183
184
185
186
187
188
189
async def get_user(self, *args: Any, **kwargs: Any) -> None:
    """Retrieve a user record from Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

list_threads(*args, **kwargs) async

List all conversation threads in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
191
192
193
194
195
196
197
198
199
200
async def list_threads(self, *args: Any, **kwargs: Any) -> None:
    """List all conversation threads in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

update_step(*args, **kwargs) async

Update a conversation step in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
202
203
204
205
206
207
208
209
210
211
async def update_step(self, *args: Any, **kwargs: Any) -> None:
    """Update a conversation step in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

update_thread(*args, **kwargs) async

Update a conversation thread in Chainlit.

Not implemented in this integration.

Parameters:
  • *args (Any, default: () ) –

    Variable length argument list.

  • **kwargs (Any, default: {} ) –

    Arbitrary keyword arguments.

Source code in src/augmentation/chainlit/service.py
213
214
215
216
217
218
219
220
221
222
async def update_thread(self, *args: Any, **kwargs: Any) -> None:
    """Update a conversation thread in Chainlit.

    Not implemented in this integration.

    Args:
        *args: Variable length argument list.
        **kwargs: Arbitrary keyword arguments.
    """
    pass

upsert_feedback(feedback) async

Upsert Chainlit feedback to Langfuse database.

Processes user feedback from Chainlit UI and stores it in Langfuse for analysis and dataset management.

Parameters:
  • feedback (Feedback) –

    Feedback object containing user feedback details and metadata.

Returns:
  • bool( bool ) –

    True if feedback was successfully upserted, False otherwise.

Source code in src/augmentation/chainlit/service.py
45
46
47
48
49
50
51
52
53
54
55
56
57
async def upsert_feedback(self, feedback: Feedback) -> bool:
    """Upsert Chainlit feedback to Langfuse database.

    Processes user feedback from Chainlit UI and stores it in Langfuse for
    analysis and dataset management.

    Args:
        feedback: Feedback object containing user feedback details and metadata.

    Returns:
        bool: True if feedback was successfully upserted, False otherwise.
    """
    return await self.feedback_service.upsert(feedback)

ChainlitServiceFactory

Bases: Factory

Factory for creating ChainlitService instances.

Creates and configures ChainlitService instances using application configuration.

Attributes:
  • _configuration_class (Type) –

    The configuration class used for creating ChainlitService instances. In this case, it is _AugmentationConfiguration.

Source code in src/augmentation/chainlit/service.py
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
class ChainlitServiceFactory(Factory):
    """Factory for creating ChainlitService instances.

    Creates and configures ChainlitService instances using application configuration.

    Attributes:
        _configuration_class (Type): The configuration class used for creating
            ChainlitService instances. In this case, it is _AugmentationConfiguration.
    """

    _configuration_class: Type = _AugmentationConfiguration

    @classmethod
    def _create_instance(
        cls, configuration: _AugmentationConfiguration
    ) -> ChainlitService:
        """Create a configured ChainlitService instance.

        Args:
            configuration: Application configuration containing Langfuse settings.

        Returns:
            ChainlitService: Configured service instance ready for use.
        """
        langfuse_dataset_service = LangfuseDatasetServiceFactory.create(
            configuration.langfuse
        )
        feedback_service = ChainlitFeedbackServiceFactory.create(configuration)
        manual_dataset = configuration.langfuse.datasets.manual_dataset
        return ChainlitService(
            langfuse_dataset_service=langfuse_dataset_service,
            feedback_service=feedback_service,
            manual_dataset=manual_dataset,
        )