vectara-agentic 0.2.24__py3-none-any.whl → 0.3.1__py3-none-any.whl
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.
Potentially problematic release.
This version of vectara-agentic might be problematic. Click here for more details.
- tests/test_agent.py +2 -2
- tests/test_hhem.py +100 -0
- tests/test_return_direct.py +2 -6
- tests/test_tools.py +1 -1
- vectara_agentic/_callback.py +26 -18
- vectara_agentic/_prompts.py +6 -2
- vectara_agentic/_version.py +1 -1
- vectara_agentic/agent.py +69 -12
- vectara_agentic/hhem.py +82 -0
- vectara_agentic/llm_utils.py +34 -10
- vectara_agentic/tool_utils.py +177 -15
- vectara_agentic/tools.py +105 -101
- vectara_agentic/types.py +22 -1
- {vectara_agentic-0.2.24.dist-info → vectara_agentic-0.3.1.dist-info}/METADATA +25 -2
- {vectara_agentic-0.2.24.dist-info → vectara_agentic-0.3.1.dist-info}/RECORD +18 -16
- {vectara_agentic-0.2.24.dist-info → vectara_agentic-0.3.1.dist-info}/WHEEL +0 -0
- {vectara_agentic-0.2.24.dist-info → vectara_agentic-0.3.1.dist-info}/licenses/LICENSE +0 -0
- {vectara_agentic-0.2.24.dist-info → vectara_agentic-0.3.1.dist-info}/top_level.txt +0 -0
vectara_agentic/tools.py
CHANGED
|
@@ -14,7 +14,6 @@ from pydantic import BaseModel, Field
|
|
|
14
14
|
from llama_index.core.tools import FunctionTool
|
|
15
15
|
from llama_index.indices.managed.vectara import VectaraIndex
|
|
16
16
|
from llama_index.core.utilities.sql_wrapper import SQLDatabase
|
|
17
|
-
from llama_index.core.tools.types import ToolOutput
|
|
18
17
|
|
|
19
18
|
from .types import ToolType
|
|
20
19
|
from .tools_catalog import ToolsCatalog, get_bad_topics
|
|
@@ -25,6 +24,7 @@ from .tool_utils import (
|
|
|
25
24
|
create_tool_from_dynamic_function,
|
|
26
25
|
build_filter_string,
|
|
27
26
|
VectaraTool,
|
|
27
|
+
create_human_readable_output,
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
LI_packages = {
|
|
@@ -170,7 +170,7 @@ class VectaraToolFactory:
|
|
|
170
170
|
)
|
|
171
171
|
|
|
172
172
|
# Dynamically generate the search function
|
|
173
|
-
def search_function(*args: Any, **kwargs: Any) ->
|
|
173
|
+
def search_function(*args: Any, **kwargs: Any) -> list[dict]:
|
|
174
174
|
"""
|
|
175
175
|
Dynamically generated function for semantic search Vectara.
|
|
176
176
|
"""
|
|
@@ -192,12 +192,11 @@ class VectaraToolFactory:
|
|
|
192
192
|
kwargs, tool_args_type, fixed_filter
|
|
193
193
|
)
|
|
194
194
|
except ValueError as e:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
raw_input={"args": args, "kwargs": kwargs},
|
|
199
|
-
raw_output={"response": str(e)},
|
|
195
|
+
msg = (
|
|
196
|
+
f"Building filter string failed in search tool due to invalid input or configuration ({e}). "
|
|
197
|
+
"Please verify the input arguments and ensure they meet the expected format or conditions."
|
|
200
198
|
)
|
|
199
|
+
return [{"text": msg, "metadata": {"args": args, "kwargs": kwargs}}]
|
|
201
200
|
|
|
202
201
|
vectara_retriever = vectara.as_retriever(
|
|
203
202
|
summary_enabled=False,
|
|
@@ -228,12 +227,7 @@ class VectaraToolFactory:
|
|
|
228
227
|
|
|
229
228
|
if len(response) == 0:
|
|
230
229
|
msg = "Vectara Tool failed to retrieve any results for the query."
|
|
231
|
-
return
|
|
232
|
-
tool_name=search_function.__name__,
|
|
233
|
-
content=msg,
|
|
234
|
-
raw_input={"args": args, "kwargs": kwargs},
|
|
235
|
-
raw_output={"response": msg},
|
|
236
|
-
)
|
|
230
|
+
return [{"text": msg, "metadata": {"args": args, "kwargs": kwargs}}]
|
|
237
231
|
unique_ids = set()
|
|
238
232
|
docs = []
|
|
239
233
|
doc_matches = {}
|
|
@@ -244,7 +238,8 @@ class VectaraToolFactory:
|
|
|
244
238
|
unique_ids.add(doc.id_)
|
|
245
239
|
doc_matches[doc.id_] = [doc.node.get_content()]
|
|
246
240
|
docs.append((doc.id_, doc.metadata))
|
|
247
|
-
|
|
241
|
+
|
|
242
|
+
res = []
|
|
248
243
|
if summarize:
|
|
249
244
|
summaries_dict = asyncio.run(
|
|
250
245
|
summarize_documents(
|
|
@@ -254,35 +249,45 @@ class VectaraToolFactory:
|
|
|
254
249
|
doc_ids=list(unique_ids),
|
|
255
250
|
)
|
|
256
251
|
)
|
|
257
|
-
for doc_id, metadata in docs:
|
|
258
|
-
summary = summaries_dict.get(doc_id, "")
|
|
259
|
-
matching_text = "\n".join(
|
|
260
|
-
f"<match {i}>{piece}</match {i}>"
|
|
261
|
-
for i, piece in enumerate(doc_matches[doc_id], start=1)
|
|
262
|
-
)
|
|
263
|
-
tool_output += (
|
|
264
|
-
f"document_id: '{doc_id}'\nmetadata: '{metadata}'\n"
|
|
265
|
-
f"matching texts: '{matching_text}'\n"
|
|
266
|
-
f"summary: '{summary}'\n\n"
|
|
267
|
-
)
|
|
268
252
|
else:
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
253
|
+
summaries_dict = {}
|
|
254
|
+
|
|
255
|
+
for doc_id, metadata in docs:
|
|
256
|
+
res.append(
|
|
257
|
+
{
|
|
258
|
+
"text": summaries_dict.get(doc_id, "") if summarize else "",
|
|
259
|
+
"metadata": {
|
|
260
|
+
"document_id": doc_id,
|
|
261
|
+
"metadata": metadata,
|
|
262
|
+
"matching_text": doc_matches[doc_id],
|
|
263
|
+
},
|
|
264
|
+
}
|
|
265
|
+
)
|
|
278
266
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
267
|
+
# Create human-readable output using sequential format
|
|
268
|
+
def format_search_results(results):
|
|
269
|
+
if not results:
|
|
270
|
+
return "No search results found"
|
|
271
|
+
|
|
272
|
+
# Create a sequential view for human reading
|
|
273
|
+
formatted_results = []
|
|
274
|
+
for i, result in enumerate(results, 1):
|
|
275
|
+
result_str = f"**Result #{i}**\n"
|
|
276
|
+
result_str += f"Document ID: {result['metadata']['document_id']}\n"
|
|
277
|
+
if summarize and result["text"]:
|
|
278
|
+
result_str += f"Summary: {result['text']}\n"
|
|
279
|
+
|
|
280
|
+
# Add all matching text if available
|
|
281
|
+
matches = result["metadata"]["matching_text"]
|
|
282
|
+
if matches:
|
|
283
|
+
result_str += ''.join(
|
|
284
|
+
f"Match #{inx} Text: {match}\n"
|
|
285
|
+
for inx, match in enumerate(matches, 1)
|
|
286
|
+
)
|
|
287
|
+
formatted_results.append(result_str)
|
|
288
|
+
return "\n".join(formatted_results)
|
|
289
|
+
|
|
290
|
+
return create_human_readable_output(res, format_search_results)
|
|
286
291
|
|
|
287
292
|
class SearchToolBaseParams(BaseModel):
|
|
288
293
|
"""Model for the base parameters of the search tool."""
|
|
@@ -362,6 +367,7 @@ class VectaraToolFactory:
|
|
|
362
367
|
frequency_penalty: Optional[float] = None,
|
|
363
368
|
presence_penalty: Optional[float] = None,
|
|
364
369
|
include_citations: bool = True,
|
|
370
|
+
citation_pattern: str = "{doc.url}",
|
|
365
371
|
save_history: bool = False,
|
|
366
372
|
fcs_threshold: float = 0.0,
|
|
367
373
|
return_direct: bool = False,
|
|
@@ -415,6 +421,9 @@ class VectaraToolFactory:
|
|
|
415
421
|
higher values increasing the diversity of topics.
|
|
416
422
|
include_citations (bool, optional): Whether to include citations in the response.
|
|
417
423
|
If True, uses markdown vectara citations that requires the Vectara scale plan.
|
|
424
|
+
citation_pattern (str, optional): The pattern for the citations in the response.
|
|
425
|
+
Default is "{doc.url}" which uses the document URL.
|
|
426
|
+
If include_citations is False, this parameter is ignored.
|
|
418
427
|
save_history (bool, optional): Whether to save the query in history.
|
|
419
428
|
fcs_threshold (float, optional): A threshold for factual consistency.
|
|
420
429
|
If set above 0, the tool notifies the calling agent that it "cannot respond" if FCS is too low.
|
|
@@ -434,9 +443,10 @@ class VectaraToolFactory:
|
|
|
434
443
|
vectara_base_url=vectara_base_url,
|
|
435
444
|
vectara_verify_ssl=vectara_verify_ssl,
|
|
436
445
|
)
|
|
446
|
+
keys_to_ignore = ["lang", "offset", "len"]
|
|
437
447
|
|
|
438
448
|
# Dynamically generate the RAG function
|
|
439
|
-
def rag_function(*args: Any, **kwargs: Any) ->
|
|
449
|
+
def rag_function(*args: Any, **kwargs: Any) -> dict:
|
|
440
450
|
"""
|
|
441
451
|
Dynamically generated function for RAG query with Vectara.
|
|
442
452
|
"""
|
|
@@ -452,12 +462,12 @@ class VectaraToolFactory:
|
|
|
452
462
|
kwargs, tool_args_type, fixed_filter
|
|
453
463
|
)
|
|
454
464
|
except ValueError as e:
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
raw_output={"response": str(e)},
|
|
465
|
+
msg = (
|
|
466
|
+
f"Building filter string failed in rag tool. "
|
|
467
|
+
f"Reason: {e}. Ensure that the input arguments match the expected "
|
|
468
|
+
f"format and include all required fields. "
|
|
460
469
|
)
|
|
470
|
+
return {"text": msg, "metadata": {"args": args, "kwargs": kwargs}}
|
|
461
471
|
|
|
462
472
|
vectara_query_engine = vectara.as_query_engine(
|
|
463
473
|
summary_enabled=True,
|
|
@@ -491,7 +501,7 @@ class VectaraToolFactory:
|
|
|
491
501
|
frequency_penalty=frequency_penalty,
|
|
492
502
|
presence_penalty=presence_penalty,
|
|
493
503
|
citations_style="markdown" if include_citations else None,
|
|
494
|
-
citations_url_pattern=
|
|
504
|
+
citations_url_pattern=citation_pattern if include_citations else None,
|
|
495
505
|
save_history=save_history,
|
|
496
506
|
x_source_str="vectara-agentic",
|
|
497
507
|
verbose=verbose,
|
|
@@ -503,73 +513,67 @@ class VectaraToolFactory:
|
|
|
503
513
|
"Tool failed to generate a response since no matches were found. "
|
|
504
514
|
"Please check the arguments and try again."
|
|
505
515
|
)
|
|
506
|
-
return
|
|
507
|
-
tool_name=rag_function.__name__,
|
|
508
|
-
content=msg,
|
|
509
|
-
raw_input={"args": args, "kwargs": kwargs},
|
|
510
|
-
raw_output={"response": msg},
|
|
511
|
-
)
|
|
516
|
+
return {"text": msg, "metadata": {"args": args, "kwargs": kwargs}}
|
|
512
517
|
if str(response) == "None":
|
|
513
518
|
msg = "Tool failed to generate a response."
|
|
514
|
-
return
|
|
515
|
-
tool_name=rag_function.__name__,
|
|
516
|
-
content=msg,
|
|
517
|
-
raw_input={"args": args, "kwargs": kwargs},
|
|
518
|
-
raw_output={"response": msg},
|
|
519
|
-
)
|
|
519
|
+
return {"text": msg, "metadata": {"args": args, "kwargs": kwargs}}
|
|
520
520
|
|
|
521
521
|
# Extract citation metadata
|
|
522
522
|
pattern = r"\[(\d+)\]"
|
|
523
523
|
matches = re.findall(pattern, response.response)
|
|
524
524
|
citation_numbers = sorted(set(int(match) for match in matches))
|
|
525
|
-
citation_metadata =
|
|
526
|
-
keys_to_ignore = ["lang", "offset", "len"]
|
|
525
|
+
citation_metadata = {}
|
|
527
526
|
for citation_number in citation_numbers:
|
|
528
|
-
metadata =
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
]
|
|
537
|
-
)
|
|
538
|
-
+ ".\n"
|
|
539
|
-
)
|
|
527
|
+
metadata = {
|
|
528
|
+
k: v
|
|
529
|
+
for k, v in response.source_nodes[
|
|
530
|
+
citation_number - 1
|
|
531
|
+
].metadata.items()
|
|
532
|
+
if k not in keys_to_ignore
|
|
533
|
+
}
|
|
534
|
+
citation_metadata[str(citation_number)] = metadata
|
|
540
535
|
fcs = 0.0
|
|
541
536
|
fcs_str = response.metadata["fcs"] if "fcs" in response.metadata else "0.0"
|
|
542
537
|
if fcs_str and is_float(fcs_str):
|
|
543
538
|
fcs = float(fcs_str)
|
|
544
539
|
if fcs < fcs_threshold:
|
|
545
540
|
msg = f"Could not answer the query due to suspected hallucination (fcs={fcs})."
|
|
546
|
-
return
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
res = {
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
541
|
+
return {
|
|
542
|
+
"text": msg,
|
|
543
|
+
"metadata": {"args": args, "kwargs": kwargs, "fcs": fcs},
|
|
544
|
+
}
|
|
545
|
+
if fcs:
|
|
546
|
+
citation_metadata["fcs"] = fcs
|
|
547
|
+
res = {"text": response.response, "metadata": citation_metadata}
|
|
548
|
+
|
|
549
|
+
# Create human-readable output with citation formatting
|
|
550
|
+
def format_rag_response(result):
|
|
551
|
+
text = result["text"]
|
|
552
|
+
|
|
553
|
+
# Format citations if present
|
|
554
|
+
metadata = result["metadata"]
|
|
555
|
+
citation_info = []
|
|
556
|
+
for key, value in metadata.items():
|
|
557
|
+
if key.isdigit():
|
|
558
|
+
doc = value.get("document", {})
|
|
559
|
+
doc_metadata = f"{key}: " + "; ".join(
|
|
560
|
+
[
|
|
561
|
+
f"{k}='{v}'"
|
|
562
|
+
for k, v in doc.items()
|
|
563
|
+
] +
|
|
564
|
+
[
|
|
565
|
+
f"{k}='{v}'"
|
|
566
|
+
for k, v in value.items()
|
|
567
|
+
if k not in ["document"] + keys_to_ignore
|
|
568
|
+
]
|
|
569
|
+
)
|
|
570
|
+
citation_info.append(doc_metadata)
|
|
571
|
+
if citation_info:
|
|
572
|
+
text += "\n\nCitations:\n" + "\n".join(citation_info)
|
|
573
|
+
|
|
574
|
+
return text
|
|
575
|
+
|
|
576
|
+
return create_human_readable_output(res, format_rag_response)
|
|
573
577
|
|
|
574
578
|
class RagToolBaseParams(BaseModel):
|
|
575
579
|
"""Model for the base parameters of the RAG tool."""
|
vectara_agentic/types.py
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
"""
|
|
2
2
|
This module contains the types used in the Vectara Agentic.
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from enum import Enum
|
|
6
|
+
from typing import Protocol, Any
|
|
5
7
|
|
|
8
|
+
from llama_index.core.schema import Document as LI_Document
|
|
6
9
|
from llama_index.core.tools.types import ToolOutput as LI_ToolOutput
|
|
7
10
|
from llama_index.core.chat_engine.types import AgentChatResponse as LI_AgentChatResponse
|
|
8
|
-
from llama_index.core.chat_engine.types import
|
|
11
|
+
from llama_index.core.chat_engine.types import (
|
|
12
|
+
StreamingAgentChatResponse as LI_StreamingAgentChatResponse,
|
|
13
|
+
)
|
|
14
|
+
|
|
9
15
|
|
|
10
16
|
class AgentType(Enum):
|
|
11
17
|
"""Enumeration for different types of agents."""
|
|
@@ -16,6 +22,7 @@ class AgentType(Enum):
|
|
|
16
22
|
LLMCOMPILER = "LLMCOMPILER"
|
|
17
23
|
LATS = "LATS"
|
|
18
24
|
|
|
25
|
+
|
|
19
26
|
class ObserverType(Enum):
|
|
20
27
|
"""Enumeration for different types of observability integrations."""
|
|
21
28
|
|
|
@@ -55,16 +62,30 @@ class LLMRole(Enum):
|
|
|
55
62
|
|
|
56
63
|
class ToolType(Enum):
|
|
57
64
|
"""Enumeration for different types of tools."""
|
|
65
|
+
|
|
58
66
|
QUERY = "query"
|
|
59
67
|
ACTION = "action"
|
|
60
68
|
|
|
69
|
+
|
|
61
70
|
class AgentConfigType(Enum):
|
|
62
71
|
"""Enumeration for different types of agent configurations."""
|
|
72
|
+
|
|
63
73
|
DEFAULT = "default"
|
|
64
74
|
FALLBACK = "fallback"
|
|
65
75
|
|
|
66
76
|
|
|
77
|
+
class HumanReadableOutput(Protocol):
|
|
78
|
+
"""Protocol for tool outputs that can provide human-readable representations."""
|
|
79
|
+
|
|
80
|
+
def to_human_readable(self) -> str:
|
|
81
|
+
"""Convert the output to a human-readable format."""
|
|
82
|
+
|
|
83
|
+
def get_raw_output(self) -> Any:
|
|
84
|
+
"""Get the raw output data."""
|
|
85
|
+
|
|
86
|
+
|
|
67
87
|
# classes for Agent responses
|
|
68
88
|
ToolOutput = LI_ToolOutput
|
|
69
89
|
AgentResponse = LI_AgentChatResponse
|
|
70
90
|
AgentStreamingResponse = LI_StreamingAgentChatResponse
|
|
91
|
+
Document = LI_Document
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vectara_agentic
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: A Python package for creating AI Assistants and AI Agents with Vectara
|
|
5
5
|
Home-page: https://github.com/vectara/py-vectara-agentic
|
|
6
6
|
Author: Ofer Mendelevitch
|
|
@@ -49,7 +49,7 @@ Requires-Dist: llama-index-tools-bing-search==0.3.0
|
|
|
49
49
|
Requires-Dist: openai>=1.82.1
|
|
50
50
|
Requires-Dist: tavily-python==0.7.3
|
|
51
51
|
Requires-Dist: exa-py==1.13.1
|
|
52
|
-
Requires-Dist: openinference-instrumentation-llama-index==4.
|
|
52
|
+
Requires-Dist: openinference-instrumentation-llama-index==4.3.1
|
|
53
53
|
Requires-Dist: opentelemetry-proto>=1.31.0
|
|
54
54
|
Requires-Dist: arize-phoenix==10.9.1
|
|
55
55
|
Requires-Dist: arize-phoenix-otel==0.10.3
|
|
@@ -61,6 +61,7 @@ Requires-Dist: python-dotenv==1.0.1
|
|
|
61
61
|
Requires-Dist: tiktoken==0.9.0
|
|
62
62
|
Requires-Dist: cloudpickle>=3.1.1
|
|
63
63
|
Requires-Dist: httpx==0.28.1
|
|
64
|
+
Requires-Dist: commonmark==0.9.1
|
|
64
65
|
Dynamic: author
|
|
65
66
|
Dynamic: author-email
|
|
66
67
|
Dynamic: classifier
|
|
@@ -479,10 +480,32 @@ def mult_func(x, y):
|
|
|
479
480
|
mult_tool = ToolsFactory().create_tool(mult_func)
|
|
480
481
|
```
|
|
481
482
|
|
|
483
|
+
#### Human-Readable Tool Output
|
|
484
|
+
|
|
485
|
+
Tools can provide both raw data and human-readable formatted output using the `create_human_readable_output` utility:
|
|
486
|
+
|
|
487
|
+
```python
|
|
488
|
+
from vectara_agentic.tool_utils import create_human_readable_output, format_as_table
|
|
489
|
+
|
|
490
|
+
def my_data_tool(query: str):
|
|
491
|
+
"""Tool that returns structured data with custom formatting."""
|
|
492
|
+
raw_data = [
|
|
493
|
+
{"name": "Alice", "age": 30, "city": "New York"},
|
|
494
|
+
{"name": "Bob", "age": 25, "city": "Boston"}
|
|
495
|
+
]
|
|
496
|
+
|
|
497
|
+
# Return human-readable output with built-in table formatter
|
|
498
|
+
return create_human_readable_output(raw_data, format_as_table)
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
Built-in formatters include `format_as_table`, `format_as_json`, and `format_as_markdown_list`. For detailed documentation and advanced usage, see [tools.md](docs/tools.md#human-readable-tool-output).
|
|
502
|
+
|
|
482
503
|
> **Important:** When you define your own Python functions as tools, implement them at the top module level,
|
|
483
504
|
> and not as nested functions. Nested functions are not supported if you use serialization
|
|
484
505
|
> (dumps/loads or from_dict/to_dict).
|
|
485
506
|
|
|
507
|
+
The human-readable format, if available, is used when computing the factual consistency score.
|
|
508
|
+
|
|
486
509
|
### Tool Validation
|
|
487
510
|
|
|
488
511
|
When creating an agent, you can enable tool validation by setting `validate_tools=True`. This will check that any tools mentioned in your custom instructions actually exist in the agent's tool set:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
tests/endpoint.py,sha256=frnpdZQpnuQNNKNYgAn2rFTarNG8MCJaNA77Bw_W22A,1420
|
|
3
|
-
tests/test_agent.py,sha256=
|
|
3
|
+
tests/test_agent.py,sha256=4aRDhEVM1zARpSOevPR8PFGTkIaSw5g5WvoQDx-4sns,5496
|
|
4
4
|
tests/test_agent_planning.py,sha256=JwEebGooROAvsQ9JZoaH6KEcrSyv1F0lL4TD4FjP8a8,2213
|
|
5
5
|
tests/test_agent_type.py,sha256=9ZImIDw7Qz5EV2tX8bDD0tT1IFYghS3-SShpAezHO7s,7381
|
|
6
6
|
tests/test_api_endpoint.py,sha256=M9YGFCy_Jphzq9JznP4ftHqxZ_yu6dgWdX1jRvdsORA,5002
|
|
@@ -8,30 +8,32 @@ tests/test_bedrock.py,sha256=23A5_2FRaEl47PzgfUPDL6dgFDPJ9iktz-A-B1UwIhg,1224
|
|
|
8
8
|
tests/test_fallback.py,sha256=M5YD7NHZ0joVU1frYIr9_OiRAIje5mrXrYVcekzlyGs,2829
|
|
9
9
|
tests/test_gemini.py,sha256=QUBYWhZkX9AjnhPn5qa7sREf6YHZWeJEmYzKwVC23Io,4081
|
|
10
10
|
tests/test_groq.py,sha256=5yTlOLwpzGRmiBPExAuulK6SEO9O13cMJWVSSHX9CsE,1212
|
|
11
|
+
tests/test_hhem.py,sha256=XFUX3x0xOa9QsafzYNP8_ZsvzIiLnWee4hdsowzHft8,3250
|
|
11
12
|
tests/test_private_llm.py,sha256=-bQBI69Z-SwhhQJGzyC9GGM4kz5c6T5kAbXLbqn_G7E,2248
|
|
12
|
-
tests/test_return_direct.py,sha256=
|
|
13
|
+
tests/test_return_direct.py,sha256=mgj1xJnvOX28aaidhZfH2DaI-kM0yfQ0P1PNV0iyLcw,1405
|
|
13
14
|
tests/test_serialization.py,sha256=Ed23GN2zhSJNdPFrVK4aqLkOhJKviczR_o0t-r9TuRI,4762
|
|
14
|
-
tests/test_tools.py,sha256=
|
|
15
|
+
tests/test_tools.py,sha256=bhhq49I3eEJyuNf5FU7M9IxPT0XtwRbRTs3gwoBHihk,17128
|
|
15
16
|
tests/test_vectara_llms.py,sha256=gw5KQ4XT3L-_A6yj2jKqj-QomCjOb9VESKBtBH2Xb8s,2362
|
|
16
17
|
tests/test_workflow.py,sha256=TmNBxBqSW5owk_Nz9LLtHvqryVNsFPkf-M1G_uFSsAM,3739
|
|
17
18
|
vectara_agentic/__init__.py,sha256=2GLDS3U6KckK-dBRl9v_x1kSV507gEhjOfuMmmu0Qxg,850
|
|
18
|
-
vectara_agentic/_callback.py,sha256=
|
|
19
|
+
vectara_agentic/_callback.py,sha256=c3848EMSpaQWXtuwdqRGbhgbZhiDwgGnemJkgm9yWAc,13238
|
|
19
20
|
vectara_agentic/_observability.py,sha256=iZlByeQTyx6g3Y8aBYcdGcxdRkoYrfxHdcrTEKO26UE,4485
|
|
20
|
-
vectara_agentic/_prompts.py,sha256=
|
|
21
|
-
vectara_agentic/_version.py,sha256=
|
|
22
|
-
vectara_agentic/agent.py,sha256=
|
|
21
|
+
vectara_agentic/_prompts.py,sha256=7PY1XBqFM5JGXSw5JzhE2QJylLawIjFv3xAEJ2AA0LQ,10550
|
|
22
|
+
vectara_agentic/_version.py,sha256=_2691WFCS6Oetu4wBzc3283NHXo4gUI7OxlOWeNJwjI,65
|
|
23
|
+
vectara_agentic/agent.py,sha256=S1Rek9Dp9HabDQPqdQlkIMUR701-XTonyoXeCRE9WtA,58215
|
|
23
24
|
vectara_agentic/agent_config.py,sha256=E-rtYMcpoGxnEAyy8231bizo2n0uGQ2qWxuSgTEfwdQ,4327
|
|
24
25
|
vectara_agentic/agent_endpoint.py,sha256=PzIN7HhEHv8Mq_Zo5cZ2xYrgdv2AN6kx6dc_2AJq28I,7497
|
|
25
26
|
vectara_agentic/db_tools.py,sha256=GUsQTZfRbT9F5K_e5HNaKXUkU6x8RErUyjDVKlZi1IA,11196
|
|
26
|
-
vectara_agentic/
|
|
27
|
+
vectara_agentic/hhem.py,sha256=j4euBX24PSCQ8P_MhhsKKnm1kv6nHKAbduHsTwtQuR0,2774
|
|
28
|
+
vectara_agentic/llm_utils.py,sha256=g-8Ja4g8X67u02pi7mQrb3O1nRre9lgeC6gJqngl5ow,7668
|
|
27
29
|
vectara_agentic/sub_query_workflow.py,sha256=JYwN0wK4QzHjTaFDsSCAQvMx9GD4g6CnqxZCnzi6xb4,13086
|
|
28
|
-
vectara_agentic/tool_utils.py,sha256=
|
|
29
|
-
vectara_agentic/tools.py,sha256=
|
|
30
|
+
vectara_agentic/tool_utils.py,sha256=9xoqVPB97CIDXOxuFIw4yZ2RlXvdayCEGPUaUPC2Tbc,24168
|
|
31
|
+
vectara_agentic/tools.py,sha256=bj8Zn3Lv63vWxu7N6_kkvOk9Vr2ZtuiiBetXUCzsK0w,34860
|
|
30
32
|
vectara_agentic/tools_catalog.py,sha256=cAN_kDOWZUoW4GNFwY5GdS6ImMUQNnF2sggx9OGK9Cg,4906
|
|
31
|
-
vectara_agentic/types.py,sha256=
|
|
33
|
+
vectara_agentic/types.py,sha256=3mrtshHiy-d5JHVxl-4tJk5DRspvYKwAYiI5LvKO1Bw,2226
|
|
32
34
|
vectara_agentic/utils.py,sha256=R9HitEG5K3Q_p2M_teosT181OUxkhs1-hnj98qDYGbE,2545
|
|
33
|
-
vectara_agentic-0.
|
|
34
|
-
vectara_agentic-0.
|
|
35
|
-
vectara_agentic-0.
|
|
36
|
-
vectara_agentic-0.
|
|
37
|
-
vectara_agentic-0.
|
|
35
|
+
vectara_agentic-0.3.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
36
|
+
vectara_agentic-0.3.1.dist-info/METADATA,sha256=5QXewroE8dsANYXCoYr-MqAm0wlNhe205tVzWaCZnEw,32079
|
|
37
|
+
vectara_agentic-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
38
|
+
vectara_agentic-0.3.1.dist-info/top_level.txt,sha256=Y7TQTFdOYGYodQRltUGRieZKIYuzeZj2kHqAUpfCUfg,22
|
|
39
|
+
vectara_agentic-0.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|