Read the docs →
ChocoBuilder (origin Chocolate Factory) is an open source LLM application development framework designed to help you easily create a powerful software development SDLC + LLM generation assistant.
For native (Android/iOS/Embedded device) SDK: see in https://github.com/unit-mesh/edge-infer
Method 1: Integrate into JVM project
Module list: https://central.sonatype.com/namespace/cc.unitmesh
dependencies {
// 核心模块
implementation ' cc.unitmesh:cocoa-core:1.0.0 '
// Pinecone
implementation ' cc.unitmesh:store-pinecone:1.0.0 '
// ElasticSearch
implementation ' cc.unitmesh:store-elasticsearch:1.0.0 '
// ...其它模块
}
See more examples: examples/
Method 2: Use RAGScript
@file:DependsOn( " cc.unitmesh:rag-script:1.0.0 " )
import cc.unitmesh.rag.*
rag {
indexing {
val chunks = document( " README.md " ).split()
store.indexing(chunks)
}
querying {
store.findRelevant( " workflow dsl design " )
.lowInMiddle()
. also {
println (it)
}
}
}
Method 3: Local deployment example
git clone https://github.com/unit-mesh/chocolate-factory
# modify OPENAI_API_KEY and OPENAI_HOST in docker-compose.yml
docker-compose up
Desktop/IDE:
Server:
Android:
See in https://framework.unitmesh.cc/ or see in documents
The key concepts of ChocoBuilder are:
(PS: Origin made by Michael Plöd at Aligning organization and architecture with strategic DDD)
A user's problem is processed by the following steps:
Example input: How is Semantic Workflow implemented?
Final output:
Example input: User published article
Final output:
Output example:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Generate an electricity bill chart for the first half of 2023, the information is as follows: ###1~June: 201.2,222,234.3,120.2,90,90.4###
Process code:
%use lets-plot
import kotlin.math.PI
import kotlin.random.Random
val incomeData = mapOf(
"x" to listOf("一月", "二月", "三月", "四月", "五月", "六月"),
"y" to listOf(201.2, 222, 234.3, 120.2, 90, 94.4)
)
letsPlot(incomeData) { x = "x"; y = "y" } +
geomBar(stat = Stat.identity) +
geomText(labelFormat = "${.2f}") { label = "y"; } +
ggtitle("2023 年上半年电费")
Final output:
RAG relevant modules were inspired by
Some RAG modules based on LangChain4j and Spring AI which is licensed under the Apache License 2.0.
This code is distributed under the MPL 2.0 license. See LICENSE
in this directory.