ws-bom-robot-app 0.0.54__tar.gz → 0.0.56__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app.egg-info → ws_bom_robot_app-0.0.56}/PKG-INFO +1 -1
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/setup.py +1 -1
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/api.py +15 -1
- ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/feedbacks/feedback_manager.py +74 -0
- ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/models/feedback.py +30 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/nebuly_handler.py +10 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/agent.py +7 -2
- ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/vector_store/loader/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56/ws_bom_robot_app.egg-info}/PKG-INFO +1 -1
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app.egg-info/SOURCES.txt +3 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/MANIFEST.in +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/README.md +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/pyproject.toml +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/requirements.txt +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/setup.cfg +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/auth.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/config.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/cron_manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/agent_context.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/agent_description.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/agent_handler.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/agent_lcel.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/defaut_prompt.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/models → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/feedbacks}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/main.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/providers → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/models}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/models/api.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/models/base.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/models/kb.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/tools → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/providers}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/providers/llm_manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/settings.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/tools/models → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/tools}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/utils → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/tools/models}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/models/main.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/tool_builder.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/tool_manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/utils.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/vector_store → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/utils}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/chunker.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/download.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/kb.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/print.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/secrets.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/utils/webhooks.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/vector_store/db → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/vector_store}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/vector_store/integration → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/vector_store/db}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/base.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/chroma.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/faiss.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/qdrant.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/generator.py +0 -0
- {ws_bom_robot_app-0.0.54/ws_bom_robot_app/llm/vector_store/loader → ws_bom_robot_app-0.0.56/ws_bom_robot_app/llm/vector_store/integration}/__init__.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/azure.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/base.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/confluence.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/dropbox.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/gcs.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/github.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/googledrive.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/jira.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/s3.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/sftp.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/sharepoint.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/sitemap.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/integration/slack.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/loader/base.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/loader/docling.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/loader/json_loader.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/main.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/task_manager.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/util.py +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app.egg-info/dependency_links.txt +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app.egg-info/requires.txt +0 -0
- {ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ _requirements = [line.split('#')[0].strip() for line in open("requirements.txt")
|
|
|
4
4
|
|
|
5
5
|
setup(
|
|
6
6
|
name="ws_bom_robot_app",
|
|
7
|
-
version="0.0.
|
|
7
|
+
version="0.0.56",
|
|
8
8
|
description="A FastAPI application serving ws bom/robot/llm platform ai.",
|
|
9
9
|
long_description=open("README.md", encoding='utf-8').read(),
|
|
10
10
|
long_description_content_type="text/markdown",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from typing import Annotated, Any, Mapping
|
|
2
|
-
from fastapi import APIRouter, HTTPException, Request, Header
|
|
2
|
+
from fastapi import APIRouter, HTTPException, Request, Header, Body
|
|
3
3
|
from fastapi.responses import StreamingResponse
|
|
4
4
|
from ws_bom_robot_app.llm.agent_description import AgentDescriptor
|
|
5
5
|
from ws_bom_robot_app.llm.models.api import InvokeRequest, StreamRequest, RulesRequest, KbRequest, VectorDbResponse
|
|
@@ -9,6 +9,7 @@ from ws_bom_robot_app.llm.vector_store.generator import kb, rules, kb_stream_fil
|
|
|
9
9
|
from ws_bom_robot_app.llm.tools.tool_manager import ToolManager
|
|
10
10
|
from ws_bom_robot_app.llm.vector_store.integration.manager import IntegrationManager
|
|
11
11
|
from ws_bom_robot_app.task_manager import task_manager, TaskHeader
|
|
12
|
+
from ws_bom_robot_app.llm.feedbacks.feedback_manager import FeedbackConfig, FeedbackManager, FeedbackInterface
|
|
12
13
|
from uuid import uuid4
|
|
13
14
|
router = APIRouter(prefix="/api/llm", tags=["llm"])
|
|
14
15
|
|
|
@@ -89,3 +90,16 @@ def _llm_models(provider: str, secrets: dict[str, Any]):
|
|
|
89
90
|
except Exception as e:
|
|
90
91
|
raise HTTPException(status_code=400, detail=str(e))
|
|
91
92
|
|
|
93
|
+
@router.post("/feedback", tags=["feedback"])
|
|
94
|
+
async def _send_feedback(feedback: FeedbackConfig):
|
|
95
|
+
"""
|
|
96
|
+
Invia un feedback usando lo strategy FeedbackManager.
|
|
97
|
+
"""
|
|
98
|
+
provider = feedback.provider
|
|
99
|
+
strategy_cls = FeedbackManager._list.get(provider)
|
|
100
|
+
if not strategy_cls:
|
|
101
|
+
from fastapi import HTTPException
|
|
102
|
+
raise HTTPException(status_code=400, detail=f"Provider '{provider}' non supportato")
|
|
103
|
+
strategy: FeedbackInterface = strategy_cls(feedback)
|
|
104
|
+
result = strategy.send_feedback()
|
|
105
|
+
return {"result": result}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
from ws_bom_robot_app.llm.models.feedback import NebulyFeedbackPayload, NebulyFeedbackAction, NebulyFeedbackMetadata
|
|
2
|
+
from ws_bom_robot_app.config import config
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
from typing import Optional
|
|
5
|
+
import requests
|
|
6
|
+
|
|
7
|
+
class FeedbackConfig(BaseModel):
|
|
8
|
+
"""
|
|
9
|
+
FeedbackConfig is a model that represents the configuration for feedback management.
|
|
10
|
+
It includes the API key and the URL for the feedback service.
|
|
11
|
+
"""
|
|
12
|
+
api_key: str = Field(..., description="The API key for authentication")
|
|
13
|
+
provider: str = Field(..., description="The provider of the feedback service")
|
|
14
|
+
user_id: str = Field(..., description="The user ID for the feedback service")
|
|
15
|
+
message_input: Optional[str] = Field(default=None, description="The input message to which the feedback refers")
|
|
16
|
+
message_output: Optional[str] = Field(default=None, description="The output message to which the feedback refers")
|
|
17
|
+
comment: str = Field(..., description="The comment provided by the user")
|
|
18
|
+
rating: int = Field(..., description="The rating given by the user (from 1 to 5)", ge=1, le=5)
|
|
19
|
+
anonymize: bool = Field(False, description="Boolean flag. If set to true, PII will be removed from the text field")
|
|
20
|
+
timestamp: str = Field(..., description="The timestamp of the feedback event")
|
|
21
|
+
message_id: Optional[str] = Field(default=None, description="The message ID for the feedback")
|
|
22
|
+
|
|
23
|
+
class FeedbackInterface:
|
|
24
|
+
def __init__(self, config: FeedbackConfig):
|
|
25
|
+
self.config = config
|
|
26
|
+
|
|
27
|
+
def send_feedback(self):
|
|
28
|
+
raise NotImplementedError
|
|
29
|
+
|
|
30
|
+
class NebulyFeedback(FeedbackInterface):
|
|
31
|
+
def __init__(self, config: FeedbackConfig):
|
|
32
|
+
super().__init__(config)
|
|
33
|
+
self.config = config
|
|
34
|
+
|
|
35
|
+
def send_feedback(self) -> str:
|
|
36
|
+
if not self.config.api_key:
|
|
37
|
+
return "Error sending feedback: API key is required for Nebuly feedback"
|
|
38
|
+
headers = {
|
|
39
|
+
"Authorization": f"Bearer {self.config.api_key}",
|
|
40
|
+
"Content-Type": "application/json"
|
|
41
|
+
}
|
|
42
|
+
action = NebulyFeedbackAction(
|
|
43
|
+
slug="rating",
|
|
44
|
+
text=self.config.comment,
|
|
45
|
+
value=self.config.rating
|
|
46
|
+
)
|
|
47
|
+
metadata = NebulyFeedbackMetadata(
|
|
48
|
+
end_user=self.config.user_id,
|
|
49
|
+
timestamp=self.config.timestamp,
|
|
50
|
+
anonymize=self.config.anonymize
|
|
51
|
+
)
|
|
52
|
+
payload = NebulyFeedbackPayload(
|
|
53
|
+
action=action,
|
|
54
|
+
metadata=metadata
|
|
55
|
+
)
|
|
56
|
+
url = f"{config.NEBULY_API_URL}/event-ingestion/api/v1/events/feedback"
|
|
57
|
+
response = requests.request("POST", url, json=payload.model_dump(), headers=headers)
|
|
58
|
+
if response.status_code != 200:
|
|
59
|
+
raise Exception(f"Error sending feedback: {response.status_code} - {response.text}")
|
|
60
|
+
return response.text
|
|
61
|
+
|
|
62
|
+
def __buildAiMessage(self) -> str:
|
|
63
|
+
message = eval(self.config.message_output)
|
|
64
|
+
message_output = ""
|
|
65
|
+
for chunk in message:
|
|
66
|
+
if isinstance(chunk, dict) and "text" in chunk:
|
|
67
|
+
message_output += chunk["text"]
|
|
68
|
+
return message_output
|
|
69
|
+
|
|
70
|
+
class FeedbackManager:
|
|
71
|
+
#class variables (static)
|
|
72
|
+
_list: dict[str,FeedbackInterface] = {
|
|
73
|
+
"nebuly": NebulyFeedback,
|
|
74
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from pydantic import BaseModel, Field
|
|
2
|
+
|
|
3
|
+
class NebulyFeedbackAction(BaseModel):
|
|
4
|
+
"""
|
|
5
|
+
FeedbackAction is a model that represents the action taken by the user
|
|
6
|
+
in response to the feedback provided by the LLM.
|
|
7
|
+
"""
|
|
8
|
+
slug: str = Field("rating", description="A string identifier for the feedback action",
|
|
9
|
+
enum=["thumbs_up", "thumbs_down", "copy_input", "copy_output", "paste", "rating"])
|
|
10
|
+
text: str = Field(..., description="The text content of the feedback")
|
|
11
|
+
value: int = Field(..., description="A numeric value associated with the feedback")
|
|
12
|
+
|
|
13
|
+
class NebulyFeedbackMetadata(BaseModel):
|
|
14
|
+
"""
|
|
15
|
+
FeedbackMetadata is a model that represents the metadata associated with user feedback.
|
|
16
|
+
This includes information about the interaction and the user who provided feedback.
|
|
17
|
+
"""
|
|
18
|
+
input: str = Field(None, description="The input of the interactions to which the action refers to")
|
|
19
|
+
output: str = Field(None, description="The output of the interactions to which the action refers to")
|
|
20
|
+
end_user: str = Field(..., description="The identifier used for the end-user")
|
|
21
|
+
timestamp: str = Field(..., description="The timestamp of the action event")
|
|
22
|
+
anonymize: bool = Field(False, description="Boolean flag. If set to true, PII will be removed from the text field")
|
|
23
|
+
|
|
24
|
+
class NebulyFeedbackPayload(BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
NebulyFeedback is a model that combines feedback action and metadata.
|
|
27
|
+
It represents a complete feedback entry from a user interaction with the LLM.
|
|
28
|
+
"""
|
|
29
|
+
action: NebulyFeedbackAction = Field(..., description="The action taken by the user as feedback")
|
|
30
|
+
metadata: NebulyFeedbackMetadata = Field(..., description="Metadata associated with the feedback")
|
|
@@ -44,6 +44,7 @@ class NebulyHandler(AsyncCallbackHandler):
|
|
|
44
44
|
self.interaction.input = self.__parse_multimodal_input(message_list[-1].content)
|
|
45
45
|
else:
|
|
46
46
|
self.interaction.input = message_list[-1].content
|
|
47
|
+
self.interaction.tags["generated"] = self.__is_message_generated(message_list)
|
|
47
48
|
else:
|
|
48
49
|
raise ValueError("Last message is not a HumanMessage")
|
|
49
50
|
self.interaction.time_start = datetime.now().astimezone().isoformat()
|
|
@@ -161,3 +162,12 @@ class NebulyHandler(AsyncCallbackHandler):
|
|
|
161
162
|
})
|
|
162
163
|
return parsed_history
|
|
163
164
|
|
|
165
|
+
def __is_message_generated(self, messages: list[BaseMessage]) -> bool:
|
|
166
|
+
# Check if the last message is generated by the model
|
|
167
|
+
if len(messages) == 0:
|
|
168
|
+
return False
|
|
169
|
+
last_user_message = f'<div class="llm__pill">{messages[-1].content}</div>'
|
|
170
|
+
last_ai_message = messages[-2].content
|
|
171
|
+
if last_user_message in last_ai_message:
|
|
172
|
+
return "true"
|
|
173
|
+
return "false"
|
|
@@ -19,8 +19,13 @@ async def get_rules(embeddings: Embeddings, rules: LlmRules, input: str | list)
|
|
|
19
19
|
rules_doc = await VectorDbManager.get_strategy(rules.vector_type).invoke(
|
|
20
20
|
embeddings,
|
|
21
21
|
rules.vector_db,
|
|
22
|
-
input,
|
|
23
|
-
|
|
22
|
+
input,
|
|
23
|
+
search_type="similarity_score_threshold",
|
|
24
|
+
search_kwargs={
|
|
25
|
+
"score_threshold": rules.threshold,
|
|
26
|
+
"k": 500,
|
|
27
|
+
"fetch_k": 500,
|
|
28
|
+
},
|
|
24
29
|
source = None) #type: ignore
|
|
25
30
|
if len(rules_doc) > 0:
|
|
26
31
|
rules_prompt = "\nFollow this rules: \n RULES: \n"
|
|
File without changes
|
|
@@ -25,9 +25,12 @@ ws_bom_robot_app/llm/defaut_prompt.py
|
|
|
25
25
|
ws_bom_robot_app/llm/main.py
|
|
26
26
|
ws_bom_robot_app/llm/nebuly_handler.py
|
|
27
27
|
ws_bom_robot_app/llm/settings.py
|
|
28
|
+
ws_bom_robot_app/llm/feedbacks/__init__.py
|
|
29
|
+
ws_bom_robot_app/llm/feedbacks/feedback_manager.py
|
|
28
30
|
ws_bom_robot_app/llm/models/__init__.py
|
|
29
31
|
ws_bom_robot_app/llm/models/api.py
|
|
30
32
|
ws_bom_robot_app/llm/models/base.py
|
|
33
|
+
ws_bom_robot_app/llm/models/feedback.py
|
|
31
34
|
ws_bom_robot_app/llm/models/kb.py
|
|
32
35
|
ws_bom_robot_app/llm/providers/__init__.py
|
|
33
36
|
ws_bom_robot_app/llm/providers/llm_manager.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/agent_description.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/providers/llm_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/models/main.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/tool_builder.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/tools/tool_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/base.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/chroma.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/faiss.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/manager.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/db/qdrant.py
RENAMED
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app/llm/vector_store/loader/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ws_bom_robot_app-0.0.54 → ws_bom_robot_app-0.0.56}/ws_bom_robot_app.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|