@@ -159,6 +159,70 @@ class AutoManagedChatGPTMemoryRetrievedContentTests: XCTestCase {
159159 D
160160 """ )
161161 }
162+
163+ func test_retrieved_content_when_the_context_window_can_take_only_one_document( ) async {
164+ let strategy = Strategy ( )
165+
166+ let memory = AutoManagedChatGPTMemory (
167+ systemPrompt: " " ,
168+ configuration: UserPreferenceChatGPTConfiguration ( ) ,
169+ functionProvider: EmptyFunctionProvider ( )
170+ )
171+
172+ await memory. mutateRetrievedContent ( [
173+ ref ( " A " ) , ref ( " B " ) , ref ( " C " ) , ref ( " D " ) , ref ( " E " ) ,
174+ ] )
175+
176+ let fullContent = """
177+ Here are the information you know about the system and the project, \
178+ separated by \( separator)
179+
180+ \( separator) [DOCUMENT 0]
181+
182+ A
183+ """
184+
185+ let maxTokenCount = await strategy. countToken ( . init( role: . user, content: fullContent) )
186+
187+ let result = await memory. generateRetrievedContentMessage (
188+ maxTokenCount: maxTokenCount + 1 ,
189+ strategy: strategy
190+ )
191+
192+ XCTAssertEqual ( result. references. count, 1 )
193+ XCTAssertEqual ( result. retrievedContent. role, . user)
194+ XCTAssertEqual ( result. retrievedContent. content, """
195+ Here are the information you know about the system and the project, \
196+ separated by \( separator)
197+
198+ \( separator) [DOCUMENT 0]
199+
200+ A
201+ """ )
202+ }
203+
204+ func test_retrieved_content_when_the_context_window_empty( ) async {
205+ let strategy = Strategy ( )
206+
207+ let memory = AutoManagedChatGPTMemory (
208+ systemPrompt: " " ,
209+ configuration: UserPreferenceChatGPTConfiguration ( ) ,
210+ functionProvider: EmptyFunctionProvider ( )
211+ )
212+
213+ await memory. mutateRetrievedContent ( [
214+ ref ( " A " ) , ref ( " B " ) , ref ( " C " ) , ref ( " D " ) , ref ( " E " ) ,
215+ ] )
216+
217+ let result = await memory. generateRetrievedContentMessage (
218+ maxTokenCount: 0 ,
219+ strategy: strategy
220+ )
221+
222+ XCTAssertEqual ( result. references. count, 0 )
223+ XCTAssertEqual ( result. retrievedContent. role, . user)
224+ XCTAssertEqual ( result. retrievedContent. content, " " )
225+ }
162226}
163227
164228private struct EmptyFunctionProvider : ChatGPTFunctionProvider {
0 commit comments