From f81bef51c50dba414760cf00424bd56590987293 Mon Sep 17 00:00:00 2001 From: sm-Hassan-Kazmi Date: Tue, 18 Feb 2025 10:37:16 +0500 Subject: [PATCH 1/2] initial tool setup --- .env.example | 3 - my_agent/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 170 bytes my_agent/agent.py | 23 ++++- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../utils/__pycache__/nodes.cpython-312.pyc | Bin 0 -> 1825 bytes .../utils/__pycache__/state.cpython-312.pyc | Bin 0 -> 643 bytes .../utils/__pycache__/tools.cpython-312.pyc | Bin 0 -> 3228 bytes my_agent/utils/tools.py | 79 +++++++++++++++++- 8 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 my_agent/__pycache__/__init__.cpython-312.pyc create mode 100644 my_agent/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 my_agent/utils/__pycache__/nodes.cpython-312.pyc create mode 100644 my_agent/utils/__pycache__/state.cpython-312.pyc create mode 100644 my_agent/utils/__pycache__/tools.cpython-312.pyc diff --git a/.env.example b/.env.example index 79394a6cf..e69de29bb 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +0,0 @@ -ANTHROPIC_API_KEY=... -TAVILY_API_KEY=... -OPENAI_API_KEY=... diff --git a/my_agent/__pycache__/__init__.cpython-312.pyc b/my_agent/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd6dba4d554930f18108231c6f6bea7c5c4beaf7 GIT binary patch literal 170 zcmX@j%ge<81eI)?(?RrO5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!^3>1B&rQ|OPOQq! z)DKE6$S=+;$uG)GE!NLT%u7!%N-W4guyj)^5_1c3QuT8y;}g?U^GfvN<1_OzOXB18 j3Mzkb*yQG?l;)(`6|n+MW(4A55aS~=BO_xGGmr%UNd7C% literal 0 HcmV?d00001 diff --git a/my_agent/agent.py b/my_agent/agent.py index e48c21503..209b644f2 100644 --- a/my_agent/agent.py +++ b/my_agent/agent.py @@ -7,7 +7,7 @@ # Define the config class GraphConfig(TypedDict): - model_name: Literal["anthropic", "openai"] + model_name: Literal[ "openai"] # Define a new graph @@ -50,3 +50,24 @@ class GraphConfig(TypedDict): # This compiles it into a LangChain Runnable, # meaning you can use it as you would any other runnable graph = workflow.compile() + +def stream_graph_updates(user_input: str): + for event in graph.stream({"messages": [("user", user_input)]}): + for value in event.values(): + print(value) + print("Assistant:", value["messages"][-1].content) + +while True: + try: + user_input = input("User: ") + if user_input.lower() in ["quit", "exit", "q"]: + print("Goodbye!") + break + + stream_graph_updates(user_input) + except: + # fallback if input() is not available + user_input = "What do you know about LangGraph?" + print("User: " + user_input) + stream_graph_updates(user_input) + break \ No newline at end of file diff --git a/my_agent/utils/__pycache__/__init__.cpython-312.pyc b/my_agent/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72ef4a4389649471e7c5026bdcc19ed6c7c48b93 GIT binary patch literal 176 zcmX@j%ge<81eI)?(?RrO5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!^4HJE&rQ|OPOQq! z)DKE6$S=+;$uG)GE!NLT%u7!%N-W4guyj)^5_1c3QuT8y;}g?U^GftfOEPnc_2c6+ p^D;}~(-psuDz4x2v z@puG5t0{k0{*n>;n-6+T>VlJH0BcA?nqVMPC<+3{q9K}6QSz~51WdUo`#4}IX0RCa zv229Qa4{?(5n(}7HiGLyXHPAJBa5OIUJk5x4=F~q$TBL%v}iG|#Q-H>O&IrA6qB`h zHt~{sX9X5Eh*v7BOBl(nZ5tFo=q`YQt>Kq} z&MrYyeMI#-W)Tx+jgqCBxZI7<4~zS87EW5wt)T`m@bF`VNW$%VX`&`=1lC30A1w*i zCGe8FUOfhZEx7%gUI`c2?ldjfK)<5j#2z<42@T;vuxCB}yP+QLc`kwH9h40fm}0|i zRh{rK>Pp3NbJy&w$f7Pb9ZXc$Bbe|+v#{FZsXkmbR8PaXsT{Q}3%j|=E0fo*Oio^} z4=-5Ma~zwvSj+g-WZasAKh0!i!owz<7Z&+OH9UNi5Sy^becjSZKG8%0V^-`OC;O`@ z4=a;-J)f`ICeA-p>!zOn8ap=CU7P5b<_*=VREX+SPf-p(QccIed9zkhE7)@Lo~s)) zZ$YZ)gi~XYQU$vu{{S)o2XK1m9q5|qFqmGww;jCrA~o{+cboTiQ#V%R{qVr*58L6f z7wPw&UTt5$vzxxVBL9;ZZjVlF-rAgQpZ|O(G1Css9LCanu?t(V3r`kyV&l!5`_WW$ z{sgu~Z9xT!h)P z@X^cAHPL=@aJ9IV%rxir2S!`7kEfgShtYF;(Xs957}$;!lo}y};94J=#ThkI#fG!! z85xyQ9U`#Ya<|mM1);t`Hem1u3!)~vz60+x>4{ho8e$#rk_g4!mqp(NX#pMeMD$L( ztSLSFl5{GbhSV2Bpb>bNY#M!GEyE2HLlO{gHo)SYB_)U0rsFaR%Fr)Brs&r9_CuUi$S8O+rL%*7jxPt2=F=g9 zsbgCdQ?3+99JEgEB0SgKiiT$fjl)O3h3>7ioxikUZl$K%$AwUwUQoPYMoPP)*%^&&R3THlF{K_Mpxe`%~VT5~(e51Vs`v7y#*E7FdR zw*%vT!VB3H3om+Bxg%qqBsRc>S+1(ORq8(+9rdS9E#0?=zYJ`!r`8EytrMqD0z1-A`7{TvELgJ7=aXcInMvjJ1I@gRJ WD?#CdSA!^ic6H(B+dqc=6aNG1kIA8%)97lX%6S3^!_Mz@af7#?OQn`1j#N9!m@lSoIDN+ys}J)~5Wd{J1wLFvhY z75z>fm??E=!Lwj9=na_>_sNz*w}@+>LDFMUxjQRyOCfYU_dZvta*^8XI^CU$(}tqc_)<+k0=Hf7-sW z+?sv%X7%Oun@5v@9{u&2c8-1IvF)aFmP?wJHBQ&p(49&LOo4kNebq=}9(CQoPnQsK2D@hve}(-e?EmrzIe4}68%*gw{{z0wre**D literal 0 HcmV?d00001 diff --git a/my_agent/utils/__pycache__/tools.cpython-312.pyc b/my_agent/utils/__pycache__/tools.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4adfac8216df6afdf1e0067f0261727e79582adc GIT binary patch literal 3228 zcma)8&2JmW6`x)1E|*{WqV4!2PA0M~nkh@kvQyQD)gqSUSgy?kR#OyAgT-ohL~gww z%*?X!vQ44F4j>~J`DFIiYv3FT^dHDQJxE9o>IOjq^pu+#@sv~F%#sqNx<(h+H*eni z?RztC-@G?p6be}c&;9J*8U}Fx;*-In_L;rUfq9B-WJ@mcq`D+=UUubrN{mWffidN( zo>teqbUp3qbzNW-H{)gNSua=5iMi_Ly+XYpAsM}eZ0!-U(CPRB$vm&&{m3d?ewxnVMLH?WBtt2Z6u+F(No zgTS@=PQ;+}Cwo_5K~E7ub;(9``CZs5N!gMuf0lYCCz!fIRHBjeDVXw?=(chl#y(OV zLT3I8sSP31L&z*3g+;KY4`DJxm>gj8Buxry@{sTB5IQ%69(gW0KZGs}p+}#K9@$5a z+G9iLF+dmkdmrbRNGean$KIhqi_ozDZ$z+Jt@CUCV{ovB7o5-`42J<`;^*O3g6G1E zq}r%f@O!0OL7RnvU#j5JqUpLOE4^Q?;DtA9xVH4GrF;0s5`Gic-o1Nc>E5SOoU;kD zs3ZP)tXNJMbw1g57kFOVe}T`yuj1eTf<$=X0C^2tj&B8+n!eSnU@K_Bj@EeER4_3c zF8MGBfVE6N3Vhr!LxRl^uTrxU_#k#+W7swC6EG7-AH^A~Z#wF%*4iGSj)m(^3+&qD z`GHuCDuZCm&CSftRWKi}l&kySG2CWt2u*}pXwndW=!8vNnwu+CW4+_F3~sx##Iv6t z1R5m(@V-hY{|z^YO@qK=iTpl^7%q8^h`47yfWQY7m&ga;q7>_^eQ@XI3k;fJ^Z&M} zt^%5M7LS^H2SP*m^7={9U-pZar?&W4-|-sKIlt`Njs-u2VP_48O>$t#VHkcEB|g-L zwSXGTbV+$U)(yiqJz^Mf)-b%lZo8b%8wTHdqM#z8{1p zk1{h1I?DB9oQ!j#38dqPbb?QdoE!)8DcS>yez-H;3_LP@-|TqK^gYrFm=gvRj>5ES z`i%xPTg?OR$K-+OwOlgoMTXgceN4AQ$7R#JjInAfqB(A!lRUhPd-xdr6JOZT^E=1< zo|<}1TVLF`xOt_UdUAC;dv*_{RPEn7n)(qSc4c&YRR++Mw!XaapsRFO{+!t!og9E( zJul2W0K}`>`mK%TCVT7+l&?<<<$IufJyC|;g})TLx1RiQdt_>WDpdsPH-IW>>q{Fy z-CXPzyH@w)liGIf+!0j$#VEd<%+^cuy_9^goF0-@jh-Du;ZSMs_b0U10`+idCn=(c zBBt6BFJeP;xj)zX`jnWbiJFvpD8j0(3K=v5TNHJ|x%56x6!9oi&c-JXm&K%IEr-O5 zHP2;!+l$ktZBxRS$dXurGslvw;fWWg;ZQHYnT{3q!CF`=>+}TQ=S!TNCW3-b$wz=~7?w87`ox<@=>+$a$=PmJQVExK3W0IaIpVZA58)psbwuL9uCy9-)e`| z&TC@Cq6R;|c~GA8v6die<@C|`h%?N0oE#G#q@#hk$Yq>dhL>>!oS$u>lc6JO%l?HwEM=3ioxkG`Il4 z1xvP5j?|DolKvpApt8~_CwH7d9pi0s749-NFJ=x84g|#w31!t-x)ke!!rA#d#z|t$ zPhOh6eC3UwOjfdZ=;>#h(BiwM!QuA0f5-A&~uwDsG&r&0dImU3L=b-5Uq zcp0{u5FKc!$weZnCiONH7f>VdNBMt^bImYpRV~-yJx1Y^Sotjr{8$U4mg6@><46vw zXbgHQvQ0m9ESiSTMVE<3_dODict: + """Search properties based on input filters.""" + # Implement your API connection and handling here + # Dummy data for the sake of example + print("1") + properties = [ + {"property": + # PropertySearchResultItem( + """ mlsnum="123456", + address="123 Main St", + price=350000.0, + beds=3, + baths=2, + city="Houston", + zipCode="77002", + sqft=1500 """} + # ) + ] + return properties + +# Example use: +# Create an instance of PropertySearchFields with the desired search criteria +# search_criteria = PropertySearchFields(city=["Houston"], max_price=500000) +# properties = search_properties(fields=search_criteria) +tools = [search_properties] \ No newline at end of file From d41c28bd07c6c67e76afcf3bb8e836a177f2f480 Mon Sep 17 00:00:00 2001 From: sm-Hassan-Kazmi Date: Tue, 18 Feb 2025 10:46:38 +0500 Subject: [PATCH 2/2] comment code for running on langsmith --- my_agent/agent.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/my_agent/agent.py b/my_agent/agent.py index 209b644f2..bcabedad9 100644 --- a/my_agent/agent.py +++ b/my_agent/agent.py @@ -51,23 +51,23 @@ class GraphConfig(TypedDict): # meaning you can use it as you would any other runnable graph = workflow.compile() -def stream_graph_updates(user_input: str): - for event in graph.stream({"messages": [("user", user_input)]}): - for value in event.values(): - print(value) - print("Assistant:", value["messages"][-1].content) +# def stream_graph_updates(user_input: str): +# for event in graph.stream({"messages": [("user", user_input)]}): +# for value in event.values(): +# print(value) +# print("Assistant:", value["messages"][-1].content) -while True: - try: - user_input = input("User: ") - if user_input.lower() in ["quit", "exit", "q"]: - print("Goodbye!") - break +# while True: +# try: +# user_input = input("User: ") +# if user_input.lower() in ["quit", "exit", "q"]: +# print("Goodbye!") +# break - stream_graph_updates(user_input) - except: - # fallback if input() is not available - user_input = "What do you know about LangGraph?" - print("User: " + user_input) - stream_graph_updates(user_input) - break \ No newline at end of file +# stream_graph_updates(user_input) +# except: +# # fallback if input() is not available +# user_input = "What do you know about LangGraph?" +# print("User: " + user_input) +# stream_graph_updates(user_input) +# break \ No newline at end of file