-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Create Tickets endpoints #160
Conversation
langchain_tools_demo/tools.py
Outdated
airline: str, | ||
flight_number: str, | ||
departure_airport: str, | ||
arrival_airport: str, | ||
departure_time: datetime.datetime, | ||
arrival_time: datetime.datetime, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a lot of parameters -- can we simplify down so it's more specific ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since we don't have a get endpoint right now, seems like these information are necessary to identify a specific flight at a specific time.
langchain_tools_demo/tools.py
Outdated
return insert_ticket | ||
|
||
|
||
async def generate_list_tickets(client: aiohttp.ClientSession): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: can we double check if this needs to be an async function
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
switched to sync function.
|
||
routes = APIRouter() | ||
|
||
|
||
def _ParseUserIdToken(headers: Mapping[str, Any]) -> Optional[str]: | ||
"""Parses the bearer token out of the request headers.""" | ||
# authorization_header = headers.lower() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: remove comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still see a comment :)
retrieval_service/app/routes.py
Outdated
# authorization_header = headers.lower() | ||
user_id_token_header = headers.get("User-Id-Token") | ||
if not user_id_token_header: | ||
print("no user authorization header") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is print the right option here? Should we start logging instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
raising exception
retrieval_service/app/routes.py
Outdated
@routes.post("/tickets/insert") | ||
async def insert_ticket( | ||
request: Request, | ||
current_user: Annotated[dict, Depends(get_current_user)], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: user info?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes that is more readable
retrieval_service/app/routes.py
Outdated
|
||
parts = str(user_id_token_header).split(" ") | ||
if len(parts) != 2 or parts[0] != "Bearer": | ||
return None |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be an empty dict? (or is None the right thing)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
raising exception instead
} | ||
|
||
except Exception as e: # pylint: disable=broad-except | ||
print(e) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let's not print - we should either log + ignore or log + throw (or just throw)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed to raising exceptions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This still needs to be updated -- in general we should try so avoid broad try/except statements. Let's only catch the error if we need too.
8719d36
to
34e2d25
Compare
9a1821c
to
6045d2c
Compare
|
||
routes = APIRouter() | ||
|
||
|
||
def _ParseUserIdToken(headers: Mapping[str, Any]) -> Optional[str]: | ||
"""Parses the bearer token out of the request headers.""" | ||
# authorization_header = headers.lower() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still see a comment :)
@@ -51,6 +53,7 @@ async def initialize_datastore(app: FastAPI): | |||
|
|||
|
|||
def init_app(cfg: AppConfig) -> FastAPI: | |||
os.environ["CLIENT_ID"] = cfg.clientId |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should store this in the App state:
app.state.CLIENT_ID = cfg.clientId
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated
} | ||
|
||
except Exception as e: # pylint: disable=broad-except | ||
print(e) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This still needs to be updated -- in general we should try so avoid broad try/except statements. Let's only catch the error if we need too.
departure_time: str, | ||
arrival_time: str, | ||
): | ||
raise NotImplementedError("Not Implemented") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason we aren't implementing here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will implement cloudsql and firestore endpoints in separate PRs
if results != "INSERT 0 1": | ||
raise Exception("Ticket Insertion failure") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't it throw an error if the insert wasn't successful already?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point... deleted this line
🤖 I have created a release *beep* *boop* --- ## 1.0.0 (2024-06-27) ### Features * Add "airports" dataset ([#8](#8)) ([e566554](e566554)) * add "amenities" dataset ([#9](#9)) ([74db3ff](74db3ff)) * add "flights" dataset ([#10](#10)) ([eebd3ce](eebd3ce)) * add api endpoints for amenities ([#12](#12)) ([bd1c411](bd1c411)) * add app_test cicd workflow ([#157](#157)) ([51f0e51](51f0e51)) * add clean up instructions ([#99](#99)) ([c9021b1](c9021b1)) * add cloud sql cloudbuild workflow ([#143](#143)) ([3dd3444](3dd3444)) * add Cloud SQL MySQL as a datastore provider ([#415](#415)) ([d3f43d7](d3f43d7)) * add cloudsql integration test ([#141](#141)) ([764ffeb](764ffeb)) * add cloudsql provider ([#5](#5)) ([32a063d](32a063d)) * add confirmation for ticket booking ([#407](#407)) ([6987280](6987280)) * add cymbal air passenger policy ([#265](#265)) ([199a67c](199a67c)) * add endpoint for policy ([#271](#271)) ([397ca79](397ca79)) * Add Firestore provider ([#65](#65)) ([0cbd8ed](0cbd8ed)) * add GET endpoint for airport ([#11](#11)) ([d36fd29](d36fd29)) * add initial "flights" endpoints ([#17](#17)) ([da374d9](da374d9)) * add initial readme ([#31](#31)) ([cb6d68c](cb6d68c)) * add instructions file for cloudsql_postgres ([#93](#93)) ([ca3d2c5](ca3d2c5)) * add instructions for alloydb ([#27](#27)) ([a30d5d1](a30d5d1)) * add integration test for postgres ([#123](#123)) ([0aeab54](0aeab54)) * add labels syncing config ([#40](#40)) ([b27558f](b27558f)) * add mock for retrieval service test ([#126](#126)) ([498c6d7](498c6d7)) * add orchestration interface ([#226](#226)) ([573c04b](573c04b)) * Add Renovate Config ([#42](#42)) ([40c221b](40c221b)) * add search airport tools to langchain agent ([#140](#140)) ([94a5df3](94a5df3)) * add smoke test for function calling ([#199](#199)) ([5eecedf](5eecedf)) * add test for database export ([#133](#133)) ([b114186](b114186)) * Adding Spanner database provider for retrieval service. ([#316](#316)) ([8990bc9](8990bc9)) * Create google sign in button and send id token with request ([#147](#147)) ([c0a34a7](c0a34a7)) * Create individual user client session ([#137](#137)) ([359e5d3](359e5d3)) * Create reset button to clear session cookies ([#152](#152)) ([f008c04](f008c04)) * Create Tickets endpoints ([#160](#160)) ([26ad5d9](26ad5d9)) * **doc:** Add Firestore setup instruction ([#87](#87)) ([e6e6fb6](e6e6fb6)) * **docs:** add code of conduct ([#39](#39)) ([0dee8dd](0dee8dd)) * **docs:** update docs ([#36](#36)) ([e908e75](e908e75)) * **docs:** update gcloud track for deployment with VPC network ([#80](#80)) ([84313c9](84313c9)) * implement signin signout ([#258](#258)) ([88b6c83](88b6c83)) * increase font-size and make UI better ([#292](#292)) ([c6dd0f6](c6dd0f6)) * inital prototype of extension ([a502f84](a502f84)) * minor UI improvements ([#275](#275)) ([7e31ac3](7e31ac3)) * minor UI updates ([#279](#279)) ([774703a](774703a)) * refactor demo frontend ([#15](#15)) ([4245020](4245020)) * refresh UI ([#239](#239)) ([0254ce8](0254ce8)) * replace October flights data ([#37](#37)) ([c2c70a2](c2c70a2)) * Replace requests package with aiohttp ([#125](#125)) ([4fc0d27](4fc0d27)) * update airport dataset and add search endpoint ([#14](#14)) ([baabfe4](baabfe4)) * update amenity embedding to include amenity name ([#144](#144)) ([3fe22ce](3fe22ce)) * update amenity_dataset with new hour columns ([#151](#151)) ([160d8df](160d8df)) * update app in langchain demo ([#225](#225)) ([7c463d9](7c463d9)) * update model to Gemini ([#158](#158)) ([09959fd](09959fd)) * Update prompt and tools ([#34](#34)) ([499f6a7](499f6a7)) * update service Dockerfile ([#19](#19)) ([ea7edc7](ea7edc7)) * update to include user name in chat ([#249](#249)) ([070b7e0](070b7e0)) * vertex ai function calling llm ([#188](#188)) ([ab1aedc](ab1aedc)) ### Bug Fixes * add dependency ([#195](#195)) ([65cc37c](65cc37c)) * add retrieval service service account role to doc ([#121](#121)) ([8ea12c9](8ea12c9)) * **ci:** use script over args in all cloudbuild ([#307](#307)) ([da8d3f6](da8d3f6)) * **ci:** use script over args in cloudbuild syntax ([#306](#306)) ([b5aa667](b5aa667)) * Do not pass None values to session.get() ([#136](#136)) ([5d9cbbc](5d9cbbc)) * **docs:** fixed broken links to demo apps ([#132](#132)) ([4955cd0](4955cd0)) * **firestore:** Add ID to all documents in Firestore provider ([#94](#94)) ([1a02328](1a02328)) * Fix closed connection issue on reset button ([#175](#175)) ([21607ec](21607ec)) * Fix get_agent() uuid comparison ([#200](#200)) ([bc68633](bc68633)) * fix the refresh icon hiding behind Google banner ([#247](#247)) ([1d858ba](1d858ba)) * **langchain_tools_demo:** Add ID Token credential flow for GCE ([#198](#198)) ([ed9b6c2](ed9b6c2)) * **langchain_tools_demo:** fix agent concurrency between restarts ([#194](#194)) ([2584154](2584154)) * **langchain_tools_demo:** use relative paths for resources ([#192](#192)) ([6f8ae0d](6f8ae0d)) * Make `clientId `optional in config.yml ([#207](#207)) ([3914d8c](3914d8c)) * missing Client ID ([#196](#196)) ([960f6b1](960f6b1)) * sign out when user token invalid ([#329](#329)) ([2ec915b](2ec915b)) * strip query params in loginUri ([#425](#425)) ([41f3bb7](41f3bb7)) * update AlloyDB instruction order ([#92](#92)) ([334257c](334257c)) * update alloydb.md to remove extra trailing space ([#46](#46)) ([7f97d33](7f97d33)) * update embeddings and pin model ([#124](#124)) ([5842c08](5842c08)) * update renovate config ([#378](#378)) ([2ec52ce](2ec52ce)) * update search airport tool ([#148](#148)) ([d4b36e9](d4b36e9)) * Use idiomatic python for conditional ([#149](#149)) ([18e5e9d](18e5e9d)) * use lazy refresh for AlloyDB and Cloud SQL Connector ([#429](#429)) ([c73484d](c73484d)) --- 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: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
No description provided.