chat-log-build

This commit is contained in:
Mohammad Zwaib
2026-07-15 23:28:25 +02:00
parent daf48f3f91
commit 794d87e408
4 changed files with 76 additions and 7 deletions
@@ -21,7 +21,7 @@ public class HommeApplication {
private AzureWebSearchAgentService azureWebSearchAgentService;
public static void main(String[] args) {
System.out.println("Main hömme");
SpringApplication.run(HommeApplication.class, args);
}
@@ -0,0 +1,41 @@
package com.homme.demo.entity;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Table(name = "chat_log")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ChatLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(columnDefinition = "TEXT")
private String question;
@Column(columnDefinition = "TEXT")
private String answer;
private Double bestDistance;
private Boolean usedWeb;
private LocalDateTime createdAt;
}
@@ -0,0 +1,8 @@
package com.homme.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.homme.demo.entity.ChatLog;
public interface ChatLogRepository extends JpaRepository<ChatLog, Integer> {
}
@@ -1,13 +1,16 @@
package com.homme.demo.service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.homme.demo.entity.ChatLog;
import com.homme.demo.entity.DocumentChunck;
import com.homme.demo.repository.ChatLogRepository;
import com.homme.demo.repository.DocumentChunckRepository;
@@ -26,7 +29,10 @@ public class RagService {
@Autowired
private DocumentChunckRepository documentChunckRepository;
@Autowired
private ChatLogRepository chatLogRepository;
private static final double DISTANCE_THRESHOULD = 0.68;
// ===== system: Rolle, Ton und Regeln (statisch) =====
@@ -101,7 +107,7 @@ public class RagService {
""";
@Transactional(readOnly = true)
@Transactional
public String answerQuestion(String question) {
long t1 = System.currentTimeMillis();
@@ -121,9 +127,10 @@ public class RagService {
String webResults = "Kein Webkontext verfuegbar." ;
boolean hatRelevantenKontext = false;
Double bestDistance = null;
if(!rows.isEmpty()) {
double bestDistance = ((Number) rows.get(0)[1]).doubleValue();
bestDistance = ((Number) rows.get(0)[1]).doubleValue();
hatRelevantenKontext = bestDistance <= DISTANCE_THRESHOULD;
System.out.println("bestDistance "+ bestDistance+ " hatRelevantenKontext "+hatRelevantenKontext);
@@ -173,11 +180,24 @@ public class RagService {
);
long t2 = System.currentTimeMillis();
String answer = azureMistralService.askMistral(SYSTEM_PROMPT, userPrompt, 250);
String answer = azureMistralService.askMistral(SYSTEM_PROMPT, userPrompt, 800);
System.out.println("Mistarl = "+ (System.currentTimeMillis() - t2)+ "ms");
Double roundedDistance = (bestDistance == null)
? null
: Math.round(bestDistance * 100.0) / 100.0;
ChatLog log = ChatLog.builder()
.question(question)
.answer(answer)
.bestDistance(roundedDistance)
.usedWeb(!hatRelevantenKontext)
.createdAt(LocalDateTime.now())
.build();
chatLogRepository.save(log);
return answer;
}