Commit Graph

156 Commits

Author SHA1 Message Date
Wenxin Du
e069520bb7 feat!: replace Source field ip_type with ipType for consistency (#197)
Replace `ip_type` with `ipType` to match the camel-case of the other
fields.
Update docs since we support both private and public IP connections.
2025-01-14 10:56:06 +08:00
Yuan
1fcc20a846 feat: add support for OpenTelemetry (#205)
Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-01-13 15:38:38 -08:00
Kurtis Van Gent
141cae7702 docs: add site for hosting docs on github pages (#204)
Adds a static site generation using Hugo, and deployed to GitHub pages
(googleapis.github.io/genai-toolbox).
2025-01-13 15:37:31 -07:00
Twisha Bansal
61627803db test: do not skip fixed tests (#201) 2025-01-13 16:54:04 +05:30
Yuan
d8ffbc68ee ci(spanner): add integration tests (#188) 2025-01-12 21:56:14 -08:00
Yuan
d65cefc600 chore: Add debug logs (#195)
Add debug logs to Toolbox. 

For example when a http fail, it will just show Error at the http level,
but not log with actual error message. err message are returned to the
api as following `{"status":"Internal Server Error","error":"error while
invoking tool: unable to execute client: spanner: code =
\"InvalidArgument\", desc = \"invalid session pool\""}`.

After adding this, if user/dev run toolbox with `--log-level=debug`, it
will output the following (debug log in addition to the error for http
request):

```
2025-01-08T14:16:25.040824-08:00 DEBUG "error while invoking tool: unable to execute client: spanner: code = \"InvalidArgument\", desc = \"invalid session pool\""

2025-01-08T14:16:25.040968-08:00 ERROR Response: 500 Server Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/test_tool_two/invoke" method: "POST" path: "/api/tool/test_tool_two/invoke" remoteIP: "127.0.0.1:51708" proto: "HTTP/1.1" requestID: "yuanteoh-macbookpro.roam.internal/N7LNMcLIUH-000001" scheme: "http" header: {user-agent: "curl/8.7.1" accept: "*/*" content-type: "application/json" content-length: "2"}} httpResponse: {status: 500 bytes: 167 elapsed: 0.301917}
```
2025-01-13 05:47:46 +00:00
Twisha Bansal
ae732e637f tests(sdk): e2e tests for langchain sdk (#176)
This PR contains toolbox Set up and e2e tests for the following
functionality:

- Load tools
- Load toolsets
- Running tools
- Auth for tools
- Auth for tool parameters

---------

Co-authored-by: Anubhav Dhawan <anubhav756@gmail.com>
2025-01-10 08:25:37 +00:00
Anubhav Dhawan
c58f0104f8 doc(langchain-sdk): Update LangChain SDK example to use Gemini Pro model for better tool selection. (#196) 2025-01-10 11:02:23 +05:30
Anubhav Dhawan
cccc34d019 doc(langchain-sdk): Use Gemini 1.5 Flash model in LangGraph example in the README. (#194) 2025-01-08 19:44:45 +05:30
Twisha Bansal
c4e9da0028 chore(docs): Use project id instead of project name in source (#184) 2025-01-07 09:33:24 -08:00
Twisha Bansal
3c74deeae9 sdk(langchain): Added license headers (#182) 2025-01-07 04:50:52 +00:00
Wenxin Du
bb0345767e fix: Fix config name in auth doc samples (#186)
The config names should be in camel case.
2025-01-06 13:45:25 -05:00
Twisha Bansal
4d7b94da9d sdk(llamaindex): Added license headers (#183) 2025-01-06 09:15:14 -07:00
Kurtis Van Gent
387a5b56b5 fix: correct parsing of floats/ints from json (#180)
Corrects an issue caused by Go defaulting to parsing JSON Numbers as
float64s. This caused some numbers to be incorrectly parsed as floats
when they were integers. This defaults to parsing using json.Number,
which allows us to parse between Int/Float more accurately.
2025-01-03 10:09:45 -07:00
Kurtis Van Gent
66ab70f702 fix: handle shutdown gracefully (#178)
Adds logic to make the server shutdown gracefully, including better
respecting cancelled contexts and providing up to 10 seconds to finish
current connections.
2024-12-31 09:53:53 -07:00
Kurtis Van Gent
c9f267c9c3 ci: cache dependencies for integration tests (#179)
Adds a cache step to cache the integration tests to speed up test time
2024-12-31 08:58:57 -07:00
Yuan
655afa51f5 ci: update lint with integration build tag (#177)
Update golangcilint to run the `integration` build tag as well.
2024-12-30 14:42:28 -08:00
Twisha Bansal
8f2ad44fb4 chore(docs): Fix source kind in example (#175) 2024-12-30 09:07:44 -07:00
Anubhav Dhawan
b56fa685e3 fix(toolbox-sdk)!: deprecate 'add_auth_headers' in favor of 'add_auth_tokens' (#170)
Client code should not be concerned with how authentication tokens are
handled internally. This commit refactors method and parameter names to
use the more abstract term "token" instead of "header," improving the
developer experience and hiding implementation details.
2024-12-28 06:29:07 +00:00
Yuan
9ac0d08acc ci(postgres): add end to end integration test (#162)
End to end integration test for postgres.

Include checks for one tool's get (manifest) and post (invoke) endpoint.

Integration tests are excluded from regular unit tests.
2024-12-27 21:29:17 -08:00
Twisha Bansal
bd6a7455f1 chore: fix link (#168) 2024-12-25 20:01:45 +00:00
Twisha Bansal
6edcf36a2b chore: added period (#169) 2024-12-25 11:55:43 -08:00
Yuan
809e547a48 feat: update log with given context (#147)
Update logging with the given context.
2024-12-23 19:55:25 -08:00
Yuan
bf276e5f56 ci: combine integration cloudbuild job (#166) 2024-12-23 15:29:35 -08:00
Twisha Bansal
938f7b41d7 chore: fix comments (#163) 2024-12-23 09:28:14 -07:00
Anubhav Dhawan
003ce510a1 feat(llamaindex-sdk): Implement OAuth support for LlamaIndex. (#159)
* Update docs for Authenticated Tools.
* Implement test cases for OAuth in LlamaIndex.
* Sync SDK dependency versions b/w LangChain and LlamaIndex.
2024-12-23 14:24:22 +05:30
Wenxin Du
5ae30c2cff ci: Add AlloyDB integration test (#158)
1. Test AlloyDB as a source connection.
2. Adding individual go build tags to separate integration test runs for
different sources.
3. Modify integration test command to only run tests in the `./tests`
directory.
2024-12-22 13:35:43 -05:00
Anubhav Dhawan
3ac7dcfb9c doc(langchain-sdk): Improve doc and tests for LangChain SDK. (#154) 2024-12-19 18:56:25 +05:30
release-please[bot]
21a9146404 chore(main): release 0.0.4 (#153)
🤖 I have created a release *beep* *boop*
---


##
[0.0.4](https://github.com/googleapis/genai-toolbox/compare/v0.0.3...v0.0.4)
(2024-12-18)


### Features

* Add `auth_required` to tools
([#123](https://github.com/googleapis/genai-toolbox/issues/123))
([3118104](3118104ae1))
* Add Auth Source configuration
([#71](https://github.com/googleapis/genai-toolbox/issues/71))
([77b0d43](77b0d43175))
* Add Tool authenticated parameters
([#80](https://github.com/googleapis/genai-toolbox/issues/80))
([380a6fb](380a6fbbd5))
* **langchain-sdk:** Correctly parse Manifest API response as JSON
([#143](https://github.com/googleapis/genai-toolbox/issues/143))
([2c8633c](2c8633c3eb))
* **langchain-sdk:** Support authentication in LangChain Toolbox SDK.
([#133](https://github.com/googleapis/genai-toolbox/issues/133))
([23fa912](23fa912a80))


### Bug Fixes

* Fix release image version tag
([#136](https://github.com/googleapis/genai-toolbox/issues/136))
([6d19ff9](6d19ff96e4))
* **langchain-sdk:** Correct test name to ensure execution and full
coverage.
([#145](https://github.com/googleapis/genai-toolbox/issues/145))
([d820ac3](d820ac3767))
* Set server version
([#150](https://github.com/googleapis/genai-toolbox/issues/150))
([abd1eb7](abd1eb702c))


### Miscellaneous Chores

* Release 0.0.4
([#152](https://github.com/googleapis/genai-toolbox/issues/152))
([86ec12f](86ec12f8c5))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
v0.0.4
2024-12-18 18:48:13 -05:00
Wenxin Du
86ec12f8c5 chore: release 0.0.4 (#152)
Release-As: 0.0.4
2024-12-18 15:29:02 -08:00
Wenxin Du
abd1eb702c fix: Set server version (#150) 2024-12-18 17:15:55 -05:00
Anubhav Dhawan
46f8bb3bc4 doc(langchain-sdk): Add guidance for configuring and using authenticated tools in Toolbox. (#146) 2024-12-18 12:54:57 -05:00
Wenxin Du
8ca7e91240 docs: Add auth source docs (#132)
Add authsources and authenticated parameter docs. Format some other .md
docs.

---------

Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
2024-12-17 13:49:43 -05:00
Anubhav Dhawan
d820ac3767 fix(langchain-sdk): Correct test name to ensure execution and full coverage. (#145) 2024-12-17 12:05:10 +00:00
Anubhav Dhawan
854f69384d chore(langchain-sdk): Fix warning about async session not closed after langchain utils tests. (#144) 2024-12-17 15:58:21 +05:30
Anubhav Dhawan
2c8633c3eb feat(langchain-sdk): Correctly parse Manifest API response as JSON (#143)
The Manifest API returns a JSON payload. Previously, it was parsed as
YAML, which worked due to YAML's superset relationship with JSON. This
change explicitly parses the response as JSON for improved robustness
and security by ensuring strict adherence to the expected format.
2024-12-17 15:29:18 +05:30
Wenxin Du
3118104ae1 feat: add auth_required to tools (#123)
Check if a tool invocation request contains required auth token.
2024-12-16 22:41:13 -05:00
Wenxin Du
380a6fbbd5 feat: Add Tool authenticated parameters (#80)
1. Add []ParamAuthSource to every Parameter type implementation to
support authenticated configs. Create new constructors for types with
auth.
2. Tool invocation API changes to parse auth header and authentecated
parameters.
3. Add authSources to Tool manifest.
2024-12-16 17:46:06 -05:00
Yuan
bb30286e65 docs(spanner): add docs (#128) 2024-12-16 11:03:14 -08:00
Anubhav Dhawan
8cc4fe384e chore(langchain-sdk): Match error message while testing tool invocation failure modes. (#141) 2024-12-16 12:05:40 +00:00
Twisha Bansal
119333bf2d tests(llamaindex-sdk): Added unit tests for llamaindex SDK client and utils. (#134)
Test coverage:

| Name    | Stmts | Miss | Cover |
| -------- | ------- | ---- | ----- |
| src/toolbox_llamaindex_sdk/__init__.py  | 2   |  0 | 100% |
| src/toolbox_llamaindex_sdk/client.py | 43    | 2 | 95% |
| src/toolbox_llamaindex_sdk/utils.py    | 48   | 0 | 100%|
| TOTAL | 93 | 2 | 98% |
2024-12-16 12:30:57 +05:30
Lawrence Wu
9860da8ecb chore: Update langchain README.md to run (#139)
Fixed missing or incorrect imports and added an example of how to pass
invoke the compiled `langgraph` agent
2024-12-13 20:38:14 -06:00
Lawrence Wu
6fe0328a69 chore: update example in README (#135)
`int` is not valid in the `tools.yaml`

Co-authored-by: Yuan <45984206+Yuan325@users.noreply.github.com>
2024-12-13 20:37:29 -06:00
Anubhav Dhawan
2b3be816f1 doc: Update README.md (#138) 2024-12-13 18:05:04 +00:00
Wenxin Du
77b0d43175 feat: Add Auth Source configuration (#71)
1. Add authentication source configs to Toolbox server.
2. Add Google auth implementation.
2024-12-13 12:22:42 -05:00
Yuan
daa679e9c3 chore(deps): update dependencies (#137) 2024-12-12 14:40:07 -08:00
Yuan
7e8d751d3f ci(cloudsql-pg): add end to end integration test (#113)
End to end integration test for cloudsql postgres.

Include checks for one tool's get (manifest) and post (invoke) endpoint.

Integration tests are excluded from regular unit tests.
2024-12-12 13:56:04 -08:00
Yuan
6d19ff96e4 fix: fix release image version tag (#136) 2024-12-12 12:05:38 -08:00
dependabot[bot]
eab98d9c51 chore(deps): bump golang.org/x/crypto from 0.28.0 to 0.31.0 (#131)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.28.0 to 0.31.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b4f1988a35"><code>b4f1988</code></a>
ssh: make the public key cache a 1-entry FIFO cache</li>
<li><a
href="7042ebcbe0"><code>7042ebc</code></a>
openpgp/clearsign: just use rand.Reader in tests</li>
<li><a
href="3e90321ac7"><code>3e90321</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="8c4e668694"><code>8c4e668</code></a>
x509roots/fallback: update bundle</li>
<li><a
href="6018723c74"><code>6018723</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="71ed71b4fa"><code>71ed71b</code></a>
README: don't recommend go get</li>
<li><a
href="750a45fe5e"><code>750a45f</code></a>
sha3: add MarshalBinary, AppendBinary, and UnmarshalBinary</li>
<li><a
href="36b172546b"><code>36b1725</code></a>
sha3: avoid trailing permutation</li>
<li><a
href="80ea76eb17"><code>80ea76e</code></a>
sha3: fix padding for long cSHAKE parameters</li>
<li><a
href="c17aa50fbd"><code>c17aa50</code></a>
sha3: avoid buffer copy</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/crypto/compare/v0.28.0...v0.31.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.28.0&new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/genai-toolbox/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Yuan <45984206+Yuan325@users.noreply.github.com>
2024-12-12 09:04:08 -08:00
Anubhav Dhawan
23fa912a80 feat(langchain-sdk): Support authentication in LangChain Toolbox SDK. (#133)
This PR adds support for authentication in the `ToolboxClient`.

Note: This is a resubmission of #117
2024-12-12 13:01:57 +05:30