Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 64 additions & 26 deletions dat-cli/src/main/java/ai/dat/cli/commands/InitCommand.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package ai.dat.cli.commands;

import ai.dat.boot.utils.ProjectUtil;
import ai.dat.cli.provider.VersionProvider;
import ai.dat.cli.processor.InputProcessor;
import ai.dat.cli.provider.VersionProvider;
import ai.dat.cli.utils.AnsiUtil;
import ai.dat.core.configuration.ConfigOption;
import ai.dat.core.configuration.ConfigurationUtils;
import ai.dat.core.data.project.EmbeddingConfig;
import ai.dat.core.data.project.EmbeddingStoreConfig;
import ai.dat.core.factories.*;
import ai.dat.core.utils.FactoryUtil;
import ai.dat.core.utils.JinjaTemplateUtil;
Expand Down Expand Up @@ -120,6 +122,12 @@ public Integer call() {
projectBasicConfiguration();
if (projectConfig.isBootMode()) { // 进入配置引导模式
projectDbConfiguration();
if (!EmbeddingModelFactoryManager.isSupported(EmbeddingConfig.DEFAULT_PROVIDER)) {
projectEmbeddingConfiguration();
}
if (!EmbeddingStoreFactoryManager.isSupported(EmbeddingStoreConfig.DEFAULT_PROVIDER)) {
projectEmbeddingStoreConfiguration();
}
projectLlmConfiguration();
}
} catch (EndOfFileException e) {
Expand Down Expand Up @@ -187,20 +195,6 @@ private boolean isProjectName(String str) {
return PROJECT_NAME_PATTERN.matcher(str.trim()).matches();
}

private String selectDbProvider() {
System.out.println("===== DB provider selection =====");
String provider = selectProvider(DatabaseAdapterFactoryManager.getSupports());
projectConfig.getDbConfig().setProvider(provider);
return provider;
}

private String selectLlmProvider() {
System.out.println("===== LLM provider selection =====");
String provider = selectProvider(ChatModelFactoryManager.getSupports());
projectConfig.getLlmConfig().setProvider(provider);
return provider;
}

private String selectProvider(Set<String> supports) {
List<String> providers = new ArrayList<>(supports);
Map<String, String> providerMap = IntStream.range(0, providers.size()).boxed()
Expand Down Expand Up @@ -228,29 +222,69 @@ private String selectProvider(Set<String> supports) {

private void projectDbConfiguration() {
System.out.println("---------- Data source configuration ----------");
String provider = selectDbProvider();
System.out.println("===== DB provider selection =====");
String provider = selectProvider(DatabaseAdapterFactoryManager.getSupports());
ElementConfig config = new ElementConfig();
config.setProvider(provider);
DatabaseAdapterFactory factory = DatabaseAdapterFactoryManager.getFactory(provider);
Set<ConfigOption<?>> requiredOptions = factory.requiredOptions();
if (!requiredOptions.isEmpty()) {
System.out.println(AnsiUtil.string(
"===== DB provider '@|fg(cyan) " + provider + "|@' configuration ====="));
projectConfig.getDbConfig().setConfigs(toConfigs(requiredOptions));
config.setConfigs(inputConfigs(requiredOptions));
}
projectConfig.setDbConfig(config);
}

private void projectLlmConfiguration() {
System.out.println("---------- LLM configuration ----------");
String provider = selectLlmProvider();
System.out.println("===== LLM provider selection =====");
String provider = selectProvider(ChatModelFactoryManager.getSupports());
ElementConfig config = new ElementConfig();
config.setProvider(provider);
ChatModelFactory factory = ChatModelFactoryManager.getFactory(provider);
Set<ConfigOption<?>> requiredOptions = factory.requiredOptions();
if (!requiredOptions.isEmpty()) {
System.out.println(AnsiUtil.string(
"===== LLM provider '@|fg(cyan) " + provider + "|@' configuration ====="));
projectConfig.getLlmConfig().setConfigs(toConfigs(requiredOptions));
config.setConfigs(inputConfigs(requiredOptions));
}
projectConfig.setLlmConfig(config);
}

private void projectEmbeddingConfiguration() {
System.out.println("---------- Embedding configuration ----------");
System.out.println("===== Embedding provider selection =====");
String provider = selectProvider(EmbeddingModelFactoryManager.getSupports());
ElementConfig config = new ElementConfig();
config.setProvider(provider);
EmbeddingModelFactory factory = EmbeddingModelFactoryManager.getFactory(provider);
Set<ConfigOption<?>> requiredOptions = factory.requiredOptions();
if (!requiredOptions.isEmpty()) {
System.out.println(AnsiUtil.string(
"===== Embedding provider '@|fg(cyan) " + provider + "|@' configuration ====="));
config.setConfigs(inputConfigs(requiredOptions));
}
projectConfig.setEmbeddingConfig(config);
}

private Map<String, Object> toConfigs(Set<ConfigOption<?>> requiredOptions) {
private void projectEmbeddingStoreConfiguration() {
System.out.println("---------- Embedding Store configuration ----------");
System.out.println("===== Embedding Store provider selection =====");
String provider = selectProvider(EmbeddingStoreFactoryManager.getSupports());
ElementConfig config = new ElementConfig();
config.setProvider(provider);
EmbeddingStoreFactory factory = EmbeddingStoreFactoryManager.getFactory(provider);
Set<ConfigOption<?>> requiredOptions = factory.requiredOptions();
if (!requiredOptions.isEmpty()) {
System.out.println(AnsiUtil.string(
"===== Embedding Store provider '@|fg(cyan) " + provider + "|@' configuration ====="));
config.setConfigs(inputConfigs(requiredOptions));
}
projectConfig.setEmbeddingStoreConfig(config);
}

private Map<String, Object> inputConfigs(Set<ConfigOption<?>> requiredOptions) {
Map<String, Object> configs = new HashMap<>();
requiredOptions.forEach(option -> {
while (true) {
Expand All @@ -267,9 +301,11 @@ private Map<String, Object> toConfigs(Set<ConfigOption<?>> requiredOptions) {
String input;
if (hasDefaultValue) {
input = PROCESSOR.readLine(prompt, defaultValue);
} else if (FactoryUtil.isSensitive(key)) {
input = PROCESSOR.readPassword(prompt);
} else {
}
// else if (FactoryUtil.isSensitive(key)) {
// input = PROCESSOR.readPassword(prompt);
// }
else {
input = PROCESSOR.readLine(prompt);
}
if (input.isEmpty()) continue;
Expand Down Expand Up @@ -436,14 +472,16 @@ static class ProjectConfig {
private String name;
private String description;
private boolean bootMode = false;
private ElementConfig dbConfig = new ElementConfig();
private ElementConfig llmConfig = new ElementConfig();
private ElementConfig dbConfig;
private ElementConfig embeddingConfig;
private ElementConfig embeddingStoreConfig;
private ElementConfig llmConfig;
}

@Getter
@Setter
static class ElementConfig {
private String provider;
private Map<String, Object> configs = new HashMap<>();
private Map<String, Object> configs;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,41 @@ db:
{{ " configuration:" }}
{% for key, value in project.dbConfig.configs.items() -%}
{{ " " ~ key ~ ": " ~ value }}
{% endfor %}
{% endfor -%}
{% endif %}

{% if project.embeddingConfig -%}
embedding:
{{ " provider: " ~ project.embeddingConfig.provider }}
{% if project.embeddingConfig.configs -%}
{{ " configuration:" }}
{% for key, value in project.embeddingConfig.configs.items() -%}
{{ " " ~ key ~ ": " ~ value }}
{% endfor -%}
{% endif %}

{% endif -%}

{% if project.embeddingStoreConfig -%}
embedding_store:
{{ " provider: " ~ project.embeddingStoreConfig.provider }}
{% if project.embeddingStoreConfig.configs -%}
{{ " configuration:" }}
{% for key, value in project.embeddingStoreConfig.configs.items() -%}
{{ " " ~ key ~ ": " ~ value }}
{% endfor -%}
{% endif %}

{% endif -%}

llms:
{{ " - name: default" }}
{{ " provider: " ~ project.llmConfig.provider }}
{% if project.llmConfig.configs -%}
{{ " configuration:" }}
{% for key, value in project.llmConfig.configs.items() -%}
{{ " " ~ key ~ ": " ~ value }}
{% endfor %}
{% endfor -%}
{% endif %}

agents:
Expand All @@ -40,4 +64,4 @@ agents:
{% for line in agent_configuration.split('\n') -%}
{{ " " ~ line }}
{% endfor -%}
{% endif %}
{% endif %}

This file was deleted.

This file was deleted.

56 changes: 38 additions & 18 deletions dat-sdk/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,11 @@
</dependency>

<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-storer-duckdb</artifactId>
<version>${project.version}</version>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.16.0</version>
</dependency>

<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-storer-weaviate</artifactId>
Expand All @@ -54,16 +55,6 @@
<version>${project.version}</version>
</dependency>

<!-- <dependency>-->
<!-- <groupId>ai.dat</groupId>-->
<!-- <artifactId>dat-embedder-bge-small-zh-v15</artifactId>-->
<!-- <version>${project.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-embedder-bge-small-zh-v15-q</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-embedder-openai</artifactId>
Expand Down Expand Up @@ -116,11 +107,6 @@
<artifactId>dat-adapter-postgresql</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-adapter-duckdb</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>ai.dat</groupId>
Expand All @@ -144,4 +130,38 @@
</dependency>
</dependencies>

<profiles>
<!-- 完整版 (默认) -->
<profile>
<id>jar:full</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<!-- 在完整版中显式包含这些依赖 -->
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-embedder-bge-small-zh-v15-q</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-storer-duckdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-adapter-duckdb</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>

<!-- 精简版 -->
<profile>
<id>jar:lite</id>
<!-- 精简版不添加额外的依赖 -->
</profile>
</profiles>

</project>
Loading