llm-function 0.0.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.
Files changed (157) hide show
  1. llm_function/.paa.tracking/.paa.config +12 -0
  2. llm_function/.paa.tracking/.paa.version +1 -0
  3. llm_function/.paa.tracking/git/dependencies/llm_func_deps/llm_function_config.py +35 -0
  4. llm_function/.paa.tracking/git/dependencies/llm_func_deps/tool_registry.py +250 -0
  5. llm_function/.paa.tracking/git/docs_cache/llm_function.md +0 -0
  6. llm_function/.paa.tracking/git/module/llm_function.py +250 -0
  7. llm_function/.paa.tracking/git/tracking/release_notes.md +5 -0
  8. llm_function/.paa.tracking/git_repo/COMMIT_EDITMSG +1 -0
  9. llm_function/.paa.tracking/git_repo/HEAD +1 -0
  10. llm_function/.paa.tracking/git_repo/config +8 -0
  11. llm_function/.paa.tracking/git_repo/description +1 -0
  12. llm_function/.paa.tracking/git_repo/hooks/applypatch-msg.sample +15 -0
  13. llm_function/.paa.tracking/git_repo/hooks/commit-msg.sample +24 -0
  14. llm_function/.paa.tracking/git_repo/hooks/fsmonitor-watchman.sample +174 -0
  15. llm_function/.paa.tracking/git_repo/hooks/post-update.sample +8 -0
  16. llm_function/.paa.tracking/git_repo/hooks/pre-applypatch.sample +14 -0
  17. llm_function/.paa.tracking/git_repo/hooks/pre-commit.sample +49 -0
  18. llm_function/.paa.tracking/git_repo/hooks/pre-merge-commit.sample +13 -0
  19. llm_function/.paa.tracking/git_repo/hooks/pre-push.sample +53 -0
  20. llm_function/.paa.tracking/git_repo/hooks/pre-rebase.sample +169 -0
  21. llm_function/.paa.tracking/git_repo/hooks/pre-receive.sample +24 -0
  22. llm_function/.paa.tracking/git_repo/hooks/prepare-commit-msg.sample +42 -0
  23. llm_function/.paa.tracking/git_repo/hooks/push-to-checkout.sample +78 -0
  24. llm_function/.paa.tracking/git_repo/hooks/sendemail-validate.sample +77 -0
  25. llm_function/.paa.tracking/git_repo/hooks/update.sample +128 -0
  26. llm_function/.paa.tracking/git_repo/index +0 -0
  27. llm_function/.paa.tracking/git_repo/info/exclude +6 -0
  28. llm_function/.paa.tracking/git_repo/logs/HEAD +1 -0
  29. llm_function/.paa.tracking/git_repo/logs/refs/heads/master +1 -0
  30. llm_function/.paa.tracking/git_repo/objects/13/9201e8ffeb4e42262e90eeaefd5267debb6e1d +1 -0
  31. llm_function/.paa.tracking/git_repo/objects/23/d10b479e3102724a6eb510225cc24bb2ce9d78 +0 -0
  32. llm_function/.paa.tracking/git_repo/objects/2d/fa3abff2848ff521ead3abb4364bd2c3ca01a6 +0 -0
  33. llm_function/.paa.tracking/git_repo/objects/45/6fc88abc846d76e0f82a3ef180425e497f8281 +0 -0
  34. llm_function/.paa.tracking/git_repo/objects/55/d196aad68e2cc20a2ea496529d9dabeb75bb0e +0 -0
  35. llm_function/.paa.tracking/git_repo/objects/63/9282ebc80b9db9b677374a7c16bc7472d5e71c +0 -0
  36. llm_function/.paa.tracking/git_repo/objects/91/f1d4c0830abe4ebb0902dc052f5dfe9e8fade7 +0 -0
  37. llm_function/.paa.tracking/git_repo/objects/9d/2a8151dd42e6abfffbbbd674b850a7066daa1a +0 -0
  38. llm_function/.paa.tracking/git_repo/objects/aa/0b3847c3f0683eed107a405b9443ec040c3eec +0 -0
  39. llm_function/.paa.tracking/git_repo/objects/cf/024b71ae427969a985d86a267adf154f526cd8 +0 -0
  40. llm_function/.paa.tracking/git_repo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  41. llm_function/.paa.tracking/git_repo/objects/fb/834f2f59b432c0688699b91926899c0e0f2a5d +0 -0
  42. llm_function/.paa.tracking/git_repo/refs/heads/master +1 -0
  43. llm_function/.paa.tracking/git_repo/refs/tags/v0.0.1 +1 -0
  44. llm_function/.paa.tracking/lsts_package_versions.yml +3 -0
  45. llm_function/.paa.tracking/package_licenses.json +1 -0
  46. llm_function/.paa.tracking/package_mapping.json +1 -0
  47. llm_function/.paa.tracking/python_modules/components/llm_func_deps/llm_function_config.py +35 -0
  48. llm_function/.paa.tracking/python_modules/components/llm_func_deps/tool_registry.py +250 -0
  49. llm_function/.paa.tracking/python_modules/llm_function.py +250 -0
  50. llm_function/.paa.tracking/release_notes.md +5 -0
  51. llm_function/.paa.tracking/version_logs.csv +5 -0
  52. llm_function/__init__.py +17 -0
  53. llm_function/artifacts/.paa.tracking/git/dependencies/llm_func_deps/llm_function_config.py +35 -0
  54. llm_function/artifacts/.paa.tracking/git/dependencies/llm_func_deps/tool_registry.py +250 -0
  55. llm_function/artifacts/.paa.tracking/git/docs_cache/llm_function.md +0 -0
  56. llm_function/artifacts/.paa.tracking/git/module/llm_function.py +250 -0
  57. llm_function/artifacts/.paa.tracking/git/tracking/release_notes.md +5 -0
  58. llm_function/artifacts/.paa.tracking/git_repo/COMMIT_EDITMSG +1 -0
  59. llm_function/artifacts/.paa.tracking/git_repo/HEAD +1 -0
  60. llm_function/artifacts/.paa.tracking/git_repo/config +8 -0
  61. llm_function/artifacts/.paa.tracking/git_repo/description +1 -0
  62. llm_function/artifacts/.paa.tracking/git_repo/hooks/applypatch-msg.sample +15 -0
  63. llm_function/artifacts/.paa.tracking/git_repo/hooks/commit-msg.sample +24 -0
  64. llm_function/artifacts/.paa.tracking/git_repo/hooks/fsmonitor-watchman.sample +174 -0
  65. llm_function/artifacts/.paa.tracking/git_repo/hooks/post-update.sample +8 -0
  66. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-applypatch.sample +14 -0
  67. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-commit.sample +49 -0
  68. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-merge-commit.sample +13 -0
  69. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-push.sample +53 -0
  70. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-rebase.sample +169 -0
  71. llm_function/artifacts/.paa.tracking/git_repo/hooks/pre-receive.sample +24 -0
  72. llm_function/artifacts/.paa.tracking/git_repo/hooks/prepare-commit-msg.sample +42 -0
  73. llm_function/artifacts/.paa.tracking/git_repo/hooks/push-to-checkout.sample +78 -0
  74. llm_function/artifacts/.paa.tracking/git_repo/hooks/sendemail-validate.sample +77 -0
  75. llm_function/artifacts/.paa.tracking/git_repo/hooks/update.sample +128 -0
  76. llm_function/artifacts/.paa.tracking/git_repo/index +0 -0
  77. llm_function/artifacts/.paa.tracking/git_repo/info/exclude +6 -0
  78. llm_function/artifacts/.paa.tracking/git_repo/logs/HEAD +1 -0
  79. llm_function/artifacts/.paa.tracking/git_repo/logs/refs/heads/master +1 -0
  80. llm_function/artifacts/.paa.tracking/git_repo/objects/13/9201e8ffeb4e42262e90eeaefd5267debb6e1d +1 -0
  81. llm_function/artifacts/.paa.tracking/git_repo/objects/23/d10b479e3102724a6eb510225cc24bb2ce9d78 +0 -0
  82. llm_function/artifacts/.paa.tracking/git_repo/objects/2d/fa3abff2848ff521ead3abb4364bd2c3ca01a6 +0 -0
  83. llm_function/artifacts/.paa.tracking/git_repo/objects/45/6fc88abc846d76e0f82a3ef180425e497f8281 +0 -0
  84. llm_function/artifacts/.paa.tracking/git_repo/objects/55/d196aad68e2cc20a2ea496529d9dabeb75bb0e +0 -0
  85. llm_function/artifacts/.paa.tracking/git_repo/objects/63/9282ebc80b9db9b677374a7c16bc7472d5e71c +0 -0
  86. llm_function/artifacts/.paa.tracking/git_repo/objects/91/f1d4c0830abe4ebb0902dc052f5dfe9e8fade7 +0 -0
  87. llm_function/artifacts/.paa.tracking/git_repo/objects/9d/2a8151dd42e6abfffbbbd674b850a7066daa1a +0 -0
  88. llm_function/artifacts/.paa.tracking/git_repo/objects/aa/0b3847c3f0683eed107a405b9443ec040c3eec +0 -0
  89. llm_function/artifacts/.paa.tracking/git_repo/objects/cf/024b71ae427969a985d86a267adf154f526cd8 +0 -0
  90. llm_function/artifacts/.paa.tracking/git_repo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  91. llm_function/artifacts/.paa.tracking/git_repo/objects/fb/834f2f59b432c0688699b91926899c0e0f2a5d +0 -0
  92. llm_function/artifacts/.paa.tracking/git_repo/refs/heads/master +1 -0
  93. llm_function/artifacts/.paa.tracking/git_repo/refs/tags/v0.0.1 +1 -0
  94. llm_function/llm_function.py +518 -0
  95. llm_function/mkdocs/docs/css/extra.css +38 -0
  96. llm_function/mkdocs/docs/index.md +24 -0
  97. llm_function/mkdocs/docs/llm_function_tools.md +168 -0
  98. llm_function/mkdocs/docs/release-notes.md +5 -0
  99. llm_function/mkdocs/mkdocs.yml +37 -0
  100. llm_function/mkdocs/site/404.html +370 -0
  101. llm_function/mkdocs/site/assets/images/favicon.png +0 -0
  102. llm_function/mkdocs/site/assets/javascripts/bundle.fe8b6f2b.min.js +29 -0
  103. llm_function/mkdocs/site/assets/javascripts/bundle.fe8b6f2b.min.js.map +7 -0
  104. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  105. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  106. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  107. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  108. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  109. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  110. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  111. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  112. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  113. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  114. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  115. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  116. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  117. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  118. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  119. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  120. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  121. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  122. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  123. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  124. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  125. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  126. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  127. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  128. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  129. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  130. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  131. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  132. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  133. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  134. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  135. llm_function/mkdocs/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  136. llm_function/mkdocs/site/assets/javascripts/lunr/tinyseg.js +206 -0
  137. llm_function/mkdocs/site/assets/javascripts/lunr/wordcut.js +6708 -0
  138. llm_function/mkdocs/site/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
  139. llm_function/mkdocs/site/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
  140. llm_function/mkdocs/site/assets/stylesheets/main.3cba04c6.min.css +1 -0
  141. llm_function/mkdocs/site/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
  142. llm_function/mkdocs/site/assets/stylesheets/palette.06af60db.min.css +1 -0
  143. llm_function/mkdocs/site/assets/stylesheets/palette.06af60db.min.css.map +1 -0
  144. llm_function/mkdocs/site/css/extra.css +38 -0
  145. llm_function/mkdocs/site/index.html +476 -0
  146. llm_function/mkdocs/site/llm_function_tools/index.html +622 -0
  147. llm_function/mkdocs/site/release-notes/index.html +468 -0
  148. llm_function/mkdocs/site/search/search_index.json +1 -0
  149. llm_function/mkdocs/site/sitemap.xml +3 -0
  150. llm_function/mkdocs/site/sitemap.xml.gz +0 -0
  151. llm_function/setup.py +47 -0
  152. llm_function-0.0.1.dist-info/METADATA +44 -0
  153. llm_function-0.0.1.dist-info/RECORD +157 -0
  154. llm_function-0.0.1.dist-info/WHEEL +5 -0
  155. llm_function-0.0.1.dist-info/licenses/LICENSE +201 -0
  156. llm_function-0.0.1.dist-info/licenses/NOTICE +4 -0
  157. llm_function-0.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,168 @@
1
+ Currently intended usage pattern for `llm_function_tools`:
2
+
3
+ - define typed tools with `@llm_tool`
4
+ - inspect the attached `ToolSpec`
5
+ - discover tools from a Python module
6
+ - load tools from a standalone `.py` file
7
+
8
+
9
+
10
+ ```python
11
+ from pathlib import Path
12
+ from tempfile import TemporaryDirectory
13
+
14
+ from pydantic import BaseModel, Field
15
+
16
+ from llm_function_tools import (
17
+ discover_tools_in_module,
18
+ get_tool_spec,
19
+ llm_tool,
20
+ load_tools_from_python_file,
21
+ tool_from_callable,
22
+ )
23
+
24
+ ```
25
+
26
+ ## Define typed tools
27
+
28
+ A tool is just a function with one `BaseModel` input and one `BaseModel` output. `@llm_tool` attaches a normalized `ToolSpec` to the function.
29
+
30
+
31
+
32
+ ```python
33
+ class WeatherInput(BaseModel):
34
+ city: str = Field(..., description="City name.")
35
+
36
+
37
+ class WeatherOutput(BaseModel):
38
+ forecast: str = Field(..., description="Weather forecast.")
39
+
40
+
41
+ @llm_tool(tags=["weather"], metadata={"scope": "demo"})
42
+ def get_weather(inputs: WeatherInput) -> WeatherOutput:
43
+ """Get current weather for a city."""
44
+ return WeatherOutput(forecast=f"Sunny in {inputs.city}")
45
+
46
+
47
+ tool_spec = get_tool_spec(get_weather)
48
+ tool_spec
49
+
50
+ ```
51
+
52
+
53
+
54
+
55
+ ToolSpec(func=<function get_weather at 0x7e0640de5360>, name='get_weather', description='Get current weather for a city.', input_model=<class '__main__.WeatherInput'>, output_model=<class '__main__.WeatherOutput'>, metadata={'scope': 'demo'}, tags=['weather'])
56
+
57
+
58
+
59
+ ## Create a `ToolSpec` from a plain callable
60
+
61
+ You can also build `ToolSpec` directly without decorating the function.
62
+
63
+
64
+
65
+ ```python
66
+ class SearchInput(BaseModel):
67
+ query: str
68
+
69
+
70
+ class SearchOutput(BaseModel):
71
+ result: str
72
+
73
+
74
+ def search_notes(inputs: SearchInput) -> SearchOutput:
75
+ """Search local notes."""
76
+ return SearchOutput(result=f"Found: {inputs.query}")
77
+
78
+
79
+ tool_from_callable(search_notes)
80
+
81
+ ```
82
+
83
+
84
+
85
+
86
+ ToolSpec(func=<function search_notes at 0x7e0640de5090>, name='search_notes', description='Search local notes.', input_model=<class '__main__.SearchInput'>, output_model=<class '__main__.SearchOutput'>, metadata={}, tags=[])
87
+
88
+
89
+
90
+ ## Discover tools from a module
91
+
92
+ In normal usage, loaders will inspect a Python module or file and collect decorated tools from it.
93
+
94
+ In a notebook, `__main__` behaves as the current module, so we can demonstrate the same discovery flow here.
95
+
96
+
97
+
98
+ ```python
99
+ import __main__
100
+
101
+ discovered = discover_tools_in_module(__main__)
102
+ [(tool.name, tool.tags, tool.metadata) for tool in discovered]
103
+
104
+ ```
105
+
106
+
107
+
108
+
109
+ [('get_weather', ['weather'], {'scope': 'demo'})]
110
+
111
+
112
+
113
+ ## Load tools from a standalone `.py` file
114
+
115
+ This is closer to the future `llm_function` use case where tools live outside the runtime module.
116
+
117
+
118
+
119
+ ```python
120
+ tmp_dir = TemporaryDirectory()
121
+ tool_file = Path(tmp_dir.name) / "sample_tools.py"
122
+ tool_file.write_text(
123
+ """
124
+ from pydantic import BaseModel
125
+ from llm_function_tools import llm_tool
126
+
127
+
128
+ class MathInput(BaseModel):
129
+ x: int
130
+
131
+
132
+ class MathOutput(BaseModel):
133
+ y: int
134
+
135
+
136
+ @llm_tool(tags=['math'])
137
+ def add_one(inputs: MathInput) -> MathOutput:
138
+ '''Add one to the input value.'''
139
+ return MathOutput(y=inputs.x + 1)
140
+ """.strip()
141
+ )
142
+
143
+ file_tools = load_tools_from_python_file(str(tool_file))
144
+ [(tool.name, tool.description, tool.tags) for tool in file_tools]
145
+
146
+ ```
147
+
148
+
149
+
150
+
151
+ [('add_one', 'Add one to the input value.', ['math'])]
152
+
153
+
154
+
155
+
156
+ ```python
157
+ file_tools
158
+ ```
159
+
160
+
161
+
162
+
163
+ [ToolSpec(func=<function add_one at 0x7e06361ae830>, name='add_one', description='Add one to the input value.', input_model=<class '_llm_function_tools_sample_tools_8306dd8f7421.MathInput'>, output_model=<class '_llm_function_tools_sample_tools_8306dd8f7421.MathOutput'>, metadata={}, tags=['math'])]
164
+
165
+
166
+
167
+ The resulting `ToolSpec` objects are the input that a higher-level runtime such as `llm_function` can later resolve into runnable tool registries with provenance metadata.
168
+
@@ -0,0 +1,5 @@
1
+ # Release notes
2
+
3
+ ### 0.0.1
4
+
5
+ - initial version of llm-function
@@ -0,0 +1,37 @@
1
+ site_name: Llm function
2
+
3
+ theme:
4
+ name: material
5
+ palette:
6
+ # Palette toggle for light mode
7
+ - scheme: default
8
+ primary: green
9
+ accent: green
10
+ toggle:
11
+ icon: material/lightbulb
12
+ name: Switch to dark mode
13
+
14
+ # Palette toggle for dark mode
15
+ - scheme: slate
16
+ primary: green
17
+ accent: green
18
+ toggle:
19
+ icon: material/lightbulb-outline
20
+ name: Switch to light mode
21
+
22
+ plugins:
23
+ - mermaid2
24
+ - search
25
+
26
+ extra_css:
27
+ - css/extra.css
28
+
29
+
30
+ repo_url: https://github.com/Kiril-Mordan/adaptive-reusables
31
+ repo_name: adaptive-reusables
32
+
33
+ nav:
34
+ - Intro: index.md
35
+
36
+ - Release notes: release-notes.md
37
+ - Llm function tools: llm_function_tools.md
@@ -0,0 +1,370 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+
10
+
11
+
12
+
13
+
14
+ <link rel="icon" href="/assets/images/favicon.png">
15
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.30">
16
+
17
+
18
+
19
+ <title>Llm function</title>
20
+
21
+
22
+
23
+ <link rel="stylesheet" href="/assets/stylesheets/main.3cba04c6.min.css">
24
+
25
+
26
+ <link rel="stylesheet" href="/assets/stylesheets/palette.06af60db.min.css">
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
40
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
41
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
42
+
43
+
44
+
45
+ <link rel="stylesheet" href="/css/extra.css">
46
+
47
+ <script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
48
+
49
+
50
+
51
+
52
+
53
+
54
+ </head>
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="green">
65
+
66
+
67
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
68
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
69
+ <label class="md-overlay" for="__drawer"></label>
70
+ <div data-md-component="skip">
71
+
72
+ </div>
73
+ <div data-md-component="announce">
74
+
75
+ </div>
76
+
77
+
78
+
79
+
80
+
81
+
82
+ <header class="md-header md-header--shadow" data-md-component="header">
83
+ <nav class="md-header__inner md-grid" aria-label="Header">
84
+ <a href="/." title="Llm function" class="md-header__button md-logo" aria-label="Llm function" data-md-component="logo">
85
+
86
+
87
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
88
+
89
+ </a>
90
+ <label class="md-header__button md-icon" for="__drawer">
91
+
92
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
93
+ </label>
94
+ <div class="md-header__title" data-md-component="header-title">
95
+ <div class="md-header__ellipsis">
96
+ <div class="md-header__topic">
97
+ <span class="md-ellipsis">
98
+ Llm function
99
+ </span>
100
+ </div>
101
+ <div class="md-header__topic" data-md-component="header-topic">
102
+ <span class="md-ellipsis">
103
+
104
+
105
+
106
+ </span>
107
+ </div>
108
+ </div>
109
+ </div>
110
+
111
+
112
+ <form class="md-header__option" data-md-component="palette">
113
+
114
+
115
+
116
+
117
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="green" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
118
+
119
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
120
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9v1Z"/></svg>
121
+ </label>
122
+
123
+
124
+
125
+
126
+
127
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="green" data-md-color-accent="green" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
128
+
129
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
130
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5Z"/></svg>
131
+ </label>
132
+
133
+
134
+ </form>
135
+
136
+
137
+
138
+ <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
139
+
140
+
141
+
142
+ <label class="md-header__button md-icon" for="__search">
143
+
144
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
145
+ </label>
146
+ <div class="md-search" data-md-component="search" role="dialog">
147
+ <label class="md-search__overlay" for="__search"></label>
148
+ <div class="md-search__inner" role="search">
149
+ <form class="md-search__form" name="search">
150
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
151
+ <label class="md-search__icon md-icon" for="__search">
152
+
153
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
154
+
155
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
156
+ </label>
157
+ <nav class="md-search__options" aria-label="Search">
158
+
159
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
160
+
161
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
162
+ </button>
163
+ </nav>
164
+
165
+ </form>
166
+ <div class="md-search__output">
167
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
168
+ <div class="md-search-result" data-md-component="search-result">
169
+ <div class="md-search-result__meta">
170
+ Initializing search
171
+ </div>
172
+ <ol class="md-search-result__list" role="presentation"></ol>
173
+ </div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </div>
178
+
179
+
180
+ <div class="md-header__source">
181
+ <a href="https://github.com/Kiril-Mordan/adaptive-reusables" title="Go to repository" class="md-source" data-md-component="source">
182
+ <div class="md-source__icon md-icon">
183
+
184
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
185
+ </div>
186
+ <div class="md-source__repository">
187
+ adaptive-reusables
188
+ </div>
189
+ </a>
190
+ </div>
191
+
192
+ </nav>
193
+
194
+ </header>
195
+
196
+ <div class="md-container" data-md-component="container">
197
+
198
+
199
+
200
+
201
+
202
+
203
+ <main class="md-main" data-md-component="main">
204
+ <div class="md-main__inner md-grid">
205
+
206
+
207
+
208
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
209
+ <div class="md-sidebar__scrollwrap">
210
+ <div class="md-sidebar__inner">
211
+
212
+
213
+
214
+
215
+ <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
216
+ <label class="md-nav__title" for="__drawer">
217
+ <a href="/." title="Llm function" class="md-nav__button md-logo" aria-label="Llm function" data-md-component="logo">
218
+
219
+
220
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
221
+
222
+ </a>
223
+ Llm function
224
+ </label>
225
+
226
+ <div class="md-nav__source">
227
+ <a href="https://github.com/Kiril-Mordan/adaptive-reusables" title="Go to repository" class="md-source" data-md-component="source">
228
+ <div class="md-source__icon md-icon">
229
+
230
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
231
+ </div>
232
+ <div class="md-source__repository">
233
+ adaptive-reusables
234
+ </div>
235
+ </a>
236
+ </div>
237
+
238
+ <ul class="md-nav__list" data-md-scrollfix>
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+ <li class="md-nav__item">
247
+ <a href="/." class="md-nav__link">
248
+
249
+
250
+ <span class="md-ellipsis">
251
+ Intro
252
+ </span>
253
+
254
+
255
+ </a>
256
+ </li>
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+ <li class="md-nav__item">
267
+ <a href="/release-notes/" class="md-nav__link">
268
+
269
+
270
+ <span class="md-ellipsis">
271
+ Release notes
272
+ </span>
273
+
274
+
275
+ </a>
276
+ </li>
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ <li class="md-nav__item">
287
+ <a href="/llm_function_tools/" class="md-nav__link">
288
+
289
+
290
+ <span class="md-ellipsis">
291
+ Llm function tools
292
+ </span>
293
+
294
+
295
+ </a>
296
+ </li>
297
+
298
+
299
+
300
+ </ul>
301
+ </nav>
302
+ </div>
303
+ </div>
304
+ </div>
305
+
306
+
307
+
308
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
309
+ <div class="md-sidebar__scrollwrap">
310
+ <div class="md-sidebar__inner">
311
+
312
+
313
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
314
+
315
+
316
+
317
+
318
+ </nav>
319
+ </div>
320
+ </div>
321
+ </div>
322
+
323
+
324
+
325
+ <div class="md-content" data-md-component="content">
326
+ <article class="md-content__inner md-typeset">
327
+
328
+ <h1>404 - Not found</h1>
329
+
330
+ </article>
331
+ </div>
332
+
333
+
334
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
335
+ </div>
336
+
337
+ </main>
338
+
339
+ <footer class="md-footer">
340
+
341
+ <div class="md-footer-meta md-typeset">
342
+ <div class="md-footer-meta__inner md-grid">
343
+ <div class="md-copyright">
344
+
345
+
346
+ Made with
347
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
348
+ Material for MkDocs
349
+ </a>
350
+
351
+ </div>
352
+
353
+ </div>
354
+ </div>
355
+ </footer>
356
+
357
+ </div>
358
+ <div class="md-dialog" data-md-component="dialog">
359
+ <div class="md-dialog__inner md-typeset"></div>
360
+ </div>
361
+
362
+
363
+ <script id="__config" type="application/json">{"base": "/", "features": [], "search": "/assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
364
+
365
+
366
+ <script src="/assets/javascripts/bundle.fe8b6f2b.min.js"></script>
367
+
368
+
369
+ </body>
370
+ </html>