Skip to content

Commit 382c27f

Browse files
authored
Move TokenTextSplitter to commonMain (#85)
1 parent 3e3ced9 commit 382c27f

File tree

8 files changed

+14
-15
lines changed

8 files changed

+14
-15
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.xebia.functional.xef.loaders
22

3-
import com.xebia.functional.xef.textsplitters.BaseTextSplitter
3+
import com.xebia.functional.xef.textsplitters.TextSplitter
44

55
interface BaseLoader {
66
suspend fun load(): List<String>
7-
suspend fun loadAndSplit(textSplitter: BaseTextSplitter): List<String> =
7+
suspend fun loadAndSplit(textSplitter: TextSplitter): List<String> =
88
textSplitter.splitDocuments(documents = load())
99
}

core/src/commonMain/kotlin/com/xebia/functional/xef/textsplitters/CharacterTextSplitter.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.xebia.functional.xef.textsplitters
22

3-
fun CharacterTextSplitter(separator: String): BaseTextSplitter =
4-
object : BaseTextSplitter {
3+
fun CharacterTextSplitter(separator: String): TextSplitter =
4+
object : TextSplitter {
55

66
override suspend fun splitText(text: String): List<String> = text.split(separator)
77

core/src/commonMain/kotlin/com/xebia/functional/xef/textsplitters/BaseTextSplitter.kt renamed to core/src/commonMain/kotlin/com/xebia/functional/xef/textsplitters/TextSplitter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.xebia.functional.xef.textsplitters
22

3-
interface BaseTextSplitter {
3+
interface TextSplitter {
44
suspend fun splitText(text: String): List<String>
55
suspend fun splitDocuments(documents: List<String>): List<String>
66
suspend fun splitTextInDocuments(text: String): List<String>

core/src/jvmMain/kotlin/com/xebia/functional/xef/textsplitters/TokenTextSplitter.kt renamed to core/src/commonMain/kotlin/com/xebia/functional/xef/textsplitters/TokenTextSplitter.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ package com.xebia.functional.xef.textsplitters
33
import com.xebia.functional.tokenizer.Encoding
44
import com.xebia.functional.tokenizer.ModelType
55

6-
fun TokenTextSplitter(modelType: ModelType, chunkSize: Int, chunkOverlap: Int): BaseTextSplitter =
6+
fun TokenTextSplitter(modelType: ModelType, chunkSize: Int, chunkOverlap: Int): TextSplitter =
77
TokenTextSplitterImpl(modelType.encoding, chunkSize, chunkOverlap)
88

99
private class TokenTextSplitterImpl(
1010
private val tokenizer: Encoding,
1111
private val chunkSize: Int,
1212
private val chunkOverlap: Int
13-
) : BaseTextSplitter {
13+
) : TextSplitter {
1414

1515
override suspend fun splitText(text: String): List<String> {
1616
val inputIds = tokenizer.encode(text)

core/src/jvmMain/kotlin/com/xebia/functional/xef/agents/BingSearch.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import arrow.core.flatten
44
import arrow.fx.coroutines.parMap
55
import com.apptasticsoftware.rssreader.Item
66
import com.apptasticsoftware.rssreader.RssReader
7-
import com.xebia.functional.xef.textsplitters.BaseTextSplitter
7+
import com.xebia.functional.xef.textsplitters.TextSplitter
88
import io.ktor.http.*
99
import java.util.stream.Collectors
1010
import kotlin.jvm.optionals.toList
1111
import kotlinx.coroutines.Dispatchers
1212

1313
suspend fun bingSearch(
1414
search: String,
15-
splitter: BaseTextSplitter,
15+
splitter: TextSplitter,
1616
url: String = "https://www.bing.com/news/search?q=${search.encodeURLParameter()}&format=rss",
1717
maxLinks: Int = 10
1818
): List<String> {
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.xebia.functional.xef.agents
22

33
import com.xebia.functional.xef.loaders.ScrapeURLTextLoader
4-
import com.xebia.functional.xef.textsplitters.BaseTextSplitter
4+
import com.xebia.functional.xef.textsplitters.TextSplitter
55

6-
suspend fun scrapeUrlContent(url: String, splitter: BaseTextSplitter): List<String> =
6+
suspend fun scrapeUrlContent(url: String, splitter: TextSplitter): List<String> =
77
ScrapeURLTextLoader(url).loadAndSplit(splitter)

filesystem/src/commonMain/kotlin/com/xebia/functional/xef/loaders/TextLoader.kt

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.xebia.functional.xef.loaders
22

33
import com.xebia.functional.xef.io.DEFAULT
4-
import com.xebia.functional.xef.textsplitters.BaseTextSplitter
54
import okio.FileSystem
65
import okio.Path
76

integrations/pdf/src/main/kotlin/com/xebia/functional/xef/pdf/PDFLoader.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.xebia.functional.xef.pdf
22

33
import com.xebia.functional.tokenizer.ModelType
44
import com.xebia.functional.xef.loaders.BaseLoader
5-
import com.xebia.functional.xef.textsplitters.BaseTextSplitter
5+
import com.xebia.functional.xef.textsplitters.TextSplitter
66
import com.xebia.functional.xef.textsplitters.TokenTextSplitter
77
import io.ktor.client.*
88
import io.ktor.client.request.*
@@ -15,7 +15,7 @@ import java.io.File
1515

1616
suspend fun pdf(
1717
url: String,
18-
splitter: BaseTextSplitter = TokenTextSplitter(modelType = ModelType.GPT_3_5_TURBO, chunkSize = 100, chunkOverlap = 50)
18+
splitter: TextSplitter = TokenTextSplitter(modelType = ModelType.GPT_3_5_TURBO, chunkSize = 100, chunkOverlap = 50)
1919
): List<String> =
2020
HttpClient().use {
2121
val response = it.get(url)
@@ -29,7 +29,7 @@ suspend fun pdf(
2929

3030
suspend fun pdf(
3131
file: File,
32-
splitter: BaseTextSplitter = TokenTextSplitter(modelType = ModelType.GPT_3_5_TURBO, chunkSize = 100, chunkOverlap = 50)
32+
splitter: TextSplitter = TokenTextSplitter(modelType = ModelType.GPT_3_5_TURBO, chunkSize = 100, chunkOverlap = 50)
3333
): List<String> {
3434
val loader = PDFLoader(file)
3535
return loader.loadAndSplit(splitter)

0 commit comments

Comments
 (0)