mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-12 22:31:24 +00:00
feat: add support for auto resolving compilation errors (#318)
This commit is contained in:
parent
7031a6dc73
commit
f831a1facd
51 changed files with 919 additions and 595 deletions
|
|
@ -64,16 +64,16 @@ public class EmbeddingsService {
|
|||
}
|
||||
|
||||
public List<Item<Object, double[]>> createEmbeddings(
|
||||
List<CheckedFile> checkedFiles,
|
||||
List<ReferencedFile> referencedFiles,
|
||||
@Nullable ProgressIndicator indicator) {
|
||||
var words = new ArrayList<Item<Object, double[]>>();
|
||||
for (int i = 0; i < checkedFiles.size(); i++) {
|
||||
for (int i = 0; i < referencedFiles.size(); i++) {
|
||||
try {
|
||||
var checkedFile = checkedFiles.get(i);
|
||||
addEmbeddings(checkedFile, words);
|
||||
var referencedFile = referencedFiles.get(i);
|
||||
addEmbeddings(referencedFile, words);
|
||||
|
||||
if (indicator != null) {
|
||||
indicator.setFraction((double) i / checkedFiles.size());
|
||||
indicator.setFraction((double) i / referencedFiles.size());
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
// ignore
|
||||
|
|
@ -101,24 +101,26 @@ public class EmbeddingsService {
|
|||
.getContent();
|
||||
}
|
||||
|
||||
private void addEmbeddings(CheckedFile checkedFile, List<Item<Object, double[]>> prevEmbeddings) {
|
||||
var fileExtension = checkedFile.getFileExtension();
|
||||
private void addEmbeddings(
|
||||
ReferencedFile referencedFile,
|
||||
List<Item<Object, double[]>> prevEmbeddings) {
|
||||
var fileExtension = referencedFile.getFileExtension();
|
||||
var codeSplitter = SplitterFactory.getCodeSplitter(fileExtension);
|
||||
if (codeSplitter != null) {
|
||||
var chunks = codeSplitter.split(
|
||||
checkedFile.getFileName(),
|
||||
checkedFile.getFileContent());
|
||||
referencedFile.getFileName(),
|
||||
referencedFile.getFileContent());
|
||||
var embeddings = openAIClient.getEmbeddings(chunks);
|
||||
for (int i = 0; i < chunks.size(); i++) {
|
||||
prevEmbeddings.add(
|
||||
new Word(chunks.get(i), checkedFile.getFileName(), normalize(embeddings.get(i))));
|
||||
new Word(chunks.get(i), referencedFile.getFileName(), normalize(embeddings.get(i))));
|
||||
}
|
||||
} else {
|
||||
var chunks = splitText(checkedFile.getFileContent(), 400);
|
||||
var chunks = splitText(referencedFile.getFileContent(), 400);
|
||||
var embeddings = getEmbeddings(chunks);
|
||||
for (int i = 0; i < chunks.size(); i++) {
|
||||
prevEmbeddings.add(
|
||||
new Word(chunks.get(i), checkedFile.getFileName(), normalize(embeddings.get(i))));
|
||||
new Word(chunks.get(i), referencedFile.getFileName(), normalize(embeddings.get(i))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,16 +4,17 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class CheckedFile {
|
||||
public class ReferencedFile {
|
||||
|
||||
private final String fileName;
|
||||
private final String filePath;
|
||||
private final String fileContent;
|
||||
|
||||
public CheckedFile(File file) {
|
||||
public ReferencedFile(File file) {
|
||||
this.fileName = file.getName();
|
||||
this.filePath = file.getPath();
|
||||
try {
|
||||
|
|
@ -23,7 +24,7 @@ public class CheckedFile {
|
|||
}
|
||||
}
|
||||
|
||||
public CheckedFile(String fileName, String filePath, String fileContent) {
|
||||
public ReferencedFile(String fileName, String filePath, String fileContent) {
|
||||
this.fileName = fileName;
|
||||
this.filePath = filePath;
|
||||
this.fileContent = fileContent;
|
||||
|
|
@ -50,4 +51,22 @@ public class CheckedFile {
|
|||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ReferencedFile that = (ReferencedFile) o;
|
||||
return Objects.equals(filePath, that.filePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(filePath);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue