ws-bom-robot-app 0.0.41__tar.gz → 0.0.42__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.
Files changed (74) hide show
  1. {ws_bom_robot_app-0.0.41/ws_bom_robot_app.egg-info → ws_bom_robot_app-0.0.42}/PKG-INFO +1 -1
  2. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/setup.py +1 -1
  3. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/main.py +40 -16
  4. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/providers/llm_manager.py +7 -5
  5. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42/ws_bom_robot_app.egg-info}/PKG-INFO +1 -1
  6. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/MANIFEST.in +0 -0
  7. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/README.md +0 -0
  8. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/pyproject.toml +0 -0
  9. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/requirements.txt +0 -0
  10. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/setup.cfg +0 -0
  11. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/__init__.py +0 -0
  12. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/auth.py +0 -0
  13. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/config.py +0 -0
  14. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/cron_manager.py +0 -0
  15. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/__init__.py +0 -0
  16. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/agent_description.py +0 -0
  17. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/agent_handler.py +0 -0
  18. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/agent_lcel.py +0 -0
  19. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/api.py +0 -0
  20. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/defaut_prompt.py +0 -0
  21. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/models/__init__.py +0 -0
  22. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/models/api.py +0 -0
  23. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/models/base.py +0 -0
  24. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/models/kb.py +0 -0
  25. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/providers/__init__.py +0 -0
  26. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/settings.py +0 -0
  27. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/__init__.py +0 -0
  28. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/models/__init__.py +0 -0
  29. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/models/main.py +0 -0
  30. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/tool_builder.py +0 -0
  31. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/tool_manager.py +0 -0
  32. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/tools/utils.py +0 -0
  33. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/__init__.py +0 -0
  34. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/agent.py +0 -0
  35. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/chunker.py +0 -0
  36. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/download.py +0 -0
  37. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/kb.py +0 -0
  38. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/print.py +0 -0
  39. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/secrets.py +0 -0
  40. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/utils/webhooks.py +0 -0
  41. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/__init__.py +0 -0
  42. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/__init__.py +0 -0
  43. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/base.py +0 -0
  44. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/chroma.py +0 -0
  45. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/faiss.py +0 -0
  46. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/manager.py +0 -0
  47. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/db/qdrant.py +0 -0
  48. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/generator.py +0 -0
  49. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/__init__.py +0 -0
  50. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/azure.py +0 -0
  51. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/base.py +0 -0
  52. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/confluence.py +0 -0
  53. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/dropbox.py +0 -0
  54. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/gcs.py +0 -0
  55. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/github.py +0 -0
  56. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/googledrive.py +0 -0
  57. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/jira.py +0 -0
  58. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/manager.py +0 -0
  59. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/s3.py +0 -0
  60. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/sftp.py +0 -0
  61. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/sharepoint.py +0 -0
  62. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/sitemap.py +0 -0
  63. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/integration/slack.py +0 -0
  64. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/loader/__init__.py +0 -0
  65. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/loader/base.py +0 -0
  66. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/loader/docling.py +0 -0
  67. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/llm/vector_store/loader/json_loader.py +0 -0
  68. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/main.py +0 -0
  69. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/task_manager.py +0 -0
  70. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app/util.py +0 -0
  71. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app.egg-info/SOURCES.txt +0 -0
  72. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app.egg-info/dependency_links.txt +0 -0
  73. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app.egg-info/requires.txt +0 -0
  74. {ws_bom_robot_app-0.0.41 → ws_bom_robot_app-0.0.42}/ws_bom_robot_app.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ws_bom_robot_app
3
- Version: 0.0.41
3
+ Version: 0.0.42
4
4
  Summary: A FastAPI application serving ws bom/robot/llm platform ai.
5
5
  Home-page: https://github.com/websolutespa/bom
6
6
  Author: Websolute Spa
@@ -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.41",
7
+ version="0.0.42",
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 asyncio import Queue
2
- import asyncio, json, logging, os, traceback
2
+ import asyncio, json, logging, os, traceback, re
3
3
  from fastapi import Request
4
4
  from langchain.callbacks.tracers import LangChainTracer
5
5
  from langchain_core.callbacks.base import AsyncCallbackHandler
@@ -28,6 +28,18 @@ async def invoke(rq: InvokeRequest) -> str:
28
28
  result: AIMessage = await processor.run_agent(_msg)
29
29
  return {"result": result.content}
30
30
 
31
+ def _parse_formatted_message(message: str) -> str:
32
+ try:
33
+ text_fragments = []
34
+ quoted_strings = re.findall(r'"([^"\\]*(?:\\.[^"\\]*)*)"', message)
35
+ for string in quoted_strings:
36
+ if not string.startswith(('threadId', 'type')) and len(string) > 1:
37
+ text_fragments.append(string)
38
+ result = ''.join(text_fragments)
39
+ result = result.replace('\\n', '\n')
40
+ except:
41
+ result = message
42
+ return result
31
43
  async def __stream(rq: StreamRequest, ctx: Request, queue: Queue,formatted: bool = True) -> None:
32
44
  await rq.initialize()
33
45
  #os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
@@ -41,21 +53,33 @@ async def __stream(rq: StreamRequest, ctx: Request, queue: Queue,formatted: bool
41
53
 
42
54
  #CREATION OF CHAT HISTORY FOR AGENT
43
55
  for message in rq.messages:
44
- if message.role == "user":
45
- settings.chat_history.append(HumanMessage(content=message.content))
46
- elif message.role == "assistant":
47
- message_content = ""
48
- if formatted and '{\"type\":\"text\"' in message.content:
49
- try:
50
- json_msg = json.loads('[' + message.content[:-1] + ']')
51
- for msg in json_msg:
52
- if msg.get("content"):
53
- message_content += msg["content"]
54
- except:
55
- message_content = message.content
56
- else:
57
- message_content = message.content
58
- settings.chat_history.append(AIMessage(content=message_content))
56
+ if message.role in ["human","user"]:
57
+ settings.chat_history.append(HumanMessage(content=message.content))
58
+ elif message.role in ["ai","assistant"]:
59
+ message_content = ""
60
+ if formatted:
61
+ if '{\"type\":\"string\"' in message.content:
62
+ try:
63
+ json_msg = json.loads('[' + message.content[:-1] + ']')
64
+ for msg in json_msg:
65
+ if msg.get("content"):
66
+ message_content += msg["content"]
67
+ except:
68
+ message_content = _parse_formatted_message(message.content)
69
+ elif '{\"type\":\"text\"' in message.content:
70
+ try:
71
+ json_msg = json.loads('[' + message.content[:-1] + ']')
72
+ for msg in json_msg:
73
+ if msg.get("text"):
74
+ message_content += msg["text"]
75
+ except:
76
+ message_content = _parse_formatted_message(message.content)
77
+ else:
78
+ message_content = _parse_formatted_message(message.content)
79
+ else:
80
+ message_content = message.content
81
+ if message_content:
82
+ settings.chat_history.append(AIMessage(content=message_content))
59
83
 
60
84
  if rq.lang_chain_tracing:
61
85
  client = LangSmithClient(
@@ -44,7 +44,9 @@ class OpenAI(LlmInterface):
44
44
 
45
45
  def get_llm(self):
46
46
  from langchain_openai import ChatOpenAI
47
- chat = ChatOpenAI(api_key=self.config.api_key, model=self.config.model)
47
+ chat = ChatOpenAI(
48
+ api_key=self.config.api_key or os.getenv("OPENAI_API_KEY"),
49
+ model=self.config.model)
48
50
  if not any(self.config.model.startswith(prefix) for prefix in ["o1", "o3"]):
49
51
  chat.temperature = self.config.temperature
50
52
  chat.streaming = True
@@ -60,7 +62,7 @@ class DeepSeek(LlmInterface):
60
62
  def get_llm(self):
61
63
  from langchain_openai import ChatOpenAI
62
64
  return ChatOpenAI(
63
- api_key=self.config.api_key,
65
+ api_key=self.config.api_key or os.getenv("DEEPSEEK_API_KEY"),
64
66
  model=self.config.model,
65
67
  base_url="https://api.deepseek.com/v1",
66
68
  max_tokens=8192,
@@ -79,7 +81,7 @@ class Google(LlmInterface):
79
81
  from langchain_google_genai.chat_models import ChatGoogleGenerativeAI
80
82
  return ChatGoogleGenerativeAI(
81
83
  name="chat",
82
- api_key=self.config.api_key,
84
+ api_key=self.config.api_key or os.getenv("GOOGLE_API_KEY"),
83
85
  model=self.config.model,
84
86
  temperature=self.config.temperature,
85
87
  disable_streaming=False
@@ -131,7 +133,7 @@ class Anthropic(LlmInterface):
131
133
  def get_llm(self):
132
134
  from langchain_anthropic import ChatAnthropic
133
135
  return ChatAnthropic(
134
- api_key=self.config.api_key,
136
+ api_key=self.config.api_key or os.getenv("ANTHROPIC_API_KEY"),
135
137
  model=self.config.model,
136
138
  temperature=self.config.temperature,
137
139
  streaming=True,
@@ -156,7 +158,7 @@ class Groq(LlmInterface):
156
158
  def get_llm(self):
157
159
  from langchain_groq import ChatGroq
158
160
  return ChatGroq(
159
- api_key=self.config.api_key,
161
+ api_key=self.config.api_key or os.getenv("GROQ_API_KEY"),
160
162
  model=self.config.model,
161
163
  #max_tokens=8192,
162
164
  temperature=self.config.temperature,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ws_bom_robot_app
3
- Version: 0.0.41
3
+ Version: 0.0.42
4
4
  Summary: A FastAPI application serving ws bom/robot/llm platform ai.
5
5
  Home-page: https://github.com/websolutespa/bom
6
6
  Author: Websolute Spa