From 88ca04136d3c7eb4ebc563ee85ffdabbdbf9329b Mon Sep 17 00:00:00 2001 From: Josako Date: Thu, 18 Jul 2024 07:08:42 +0200 Subject: [PATCH] Portkey Integration --- .DS_Store | Bin 14340 -> 14340 bytes common/utils/model_utils.py | 39 ++++++++++++++++++++++++++++++------ config/config.py | 5 ++++- docker/.DS_Store | Bin 10244 -> 10244 bytes docker/db/.DS_Store | Bin 6148 -> 6148 bytes requirements.txt | 3 ++- 6 files changed, 39 insertions(+), 8 deletions(-) diff --git a/.DS_Store b/.DS_Store index f4801c8a468d10e8db2bc5fd3d88875dd5f36ed0..891abbf75b16241ffa2b15f4a18f8a96e00ca2ce 100644 GIT binary patch delta 1340 zcmZoEXepTB&zQC`U^hRb-DC$rvCT>XlFV#f6OUZymz(S;tcGApZEhDn#>jL*U~;3V z!sL8WF1D@xV%>VmlQ#mn^F?{s7)_IwZ&ld5Q8a{+&3*~k0B&(9D08#6cr7Cv^BS=5 zIteudQ)=@UiSvw#0t^KVi3}wS$qX3`sSGI$@nC*3LpD$}9Vk*fd7YwsJwa7D>4w3{ z`MCuQAi#8s4M-Bylbi42l9ZF51XRmmXw+@v&lo~oSs z;T!D%q6%PFLyXL0NCWyV9mQ3Q43i(L-r}${G}BQqG&PvKQOI#Jo4TZzu=+9+uv=1q zt^ma;(2>Y)G2b2-l?q7+Y`_3RQiBK-h?>cn>T=A&Neec2smqNfacFKui34Jjcs0{z Pc7tNp!5`I=yVR=y0o_(B delta 882 zcmZoEXepTB&zQI|U^o9{dqMHdN&=G1Y&n8*b4$c0I|{2Im{ObDg^w{Z9hy41QB+}a zz9<*lpSUiYpR$uT0=e@=d7#|Q8%0AH*^-Z~iglKr%q=bjWp36MuVrM@tx%kHUTE?< z2{i;$YV#L~^NgEsOQ$lbxlLhUU|?q`W=LizV#s7DU?^cI&dqmmNy^Dj0?KftugnZA zke-|-tH1_fZtjt-XWIBcf^jpqf(WCc$^K(NWh@MO4Cz4aCCFO6q|;cNq$fKlO0hwi z35wE8Sr;bPDo(D~k_BpG1!~J=NMT52NJQ4S#rW~{U$Vy>(N(0tU4>mmL55*)a(-?B zP#+L101^B^8wwaIfxgOM$Y;o7&}AqC+E&D{xnIeJQAKYbPzf8*>-h}1KnPTT?2PLR z#6dy#U0IF|%9K`7V0^IIM#YYiscHA*8dVv#yK_FA{USSgo~oQWgb8*v#K=5`G@$R& zQC)Rm@?+Io9A<`QIts=HCX+V`IZkF%m-ON>s<;4lOA62x$qd;bMHq)$ diff --git a/common/utils/model_utils.py b/common/utils/model_utils.py index 9ae343f..67d6851 100644 --- a/common/utils/model_utils.py +++ b/common/utils/model_utils.py @@ -8,6 +8,7 @@ import ast from typing import List from openai import OpenAI # from groq import Groq +from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL from common.models.document import EmbeddingSmallOpenAI, EmbeddingLargeOpenAI @@ -91,16 +92,26 @@ def select_model_variables(tenant): # Set Embedding variables match embedding_provider: case 'openai': + portkey_metadata = {'tenant_id': str(tenant.id)} + portkey_headers = createHeaders(api_key=current_app.config.get('PORTKEY_API_KEY'), + provider='openai', + metadata=portkey_metadata) match embedding_model: case 'text-embedding-3-small': api_key = current_app.config.get('OPENAI_API_KEY') model_variables['embedding_model'] = OpenAIEmbeddings(api_key=api_key, - model='text-embedding-3-small') + model='text-embedding-3-small', + base_url=PORTKEY_GATEWAY_URL, + default_headers=portkey_headers + ) model_variables['embedding_db_model'] = EmbeddingSmallOpenAI case 'text-embedding-3-large': api_key = current_app.config.get('OPENAI_API_KEY') model_variables['embedding_model'] = OpenAIEmbeddings(api_key=api_key, - model='text-embedding-3-large') + model='text-embedding-3-large', + base_url=PORTKEY_GATEWAY_URL, + default_headers=portkey_headers + ) model_variables['embedding_db_model'] = EmbeddingLargeOpenAI case _: raise Exception(f'Error setting model variables for tenant {tenant.id} ' @@ -112,13 +123,22 @@ def select_model_variables(tenant): # Set Chat model variables match llm_provider: case 'openai': + portkey_metadata = {'tenant_id': str(tenant.id)} + portkey_headers = createHeaders(api_key=current_app.config.get('PORTKEY_API_KEY'), + metadata=portkey_metadata, + provider='openai') + tool_calling_supported = False api_key = current_app.config.get('OPENAI_API_KEY') model_variables['llm'] = ChatOpenAI(api_key=api_key, model=llm_model, - temperature=model_variables['RAG_temperature']) + temperature=model_variables['RAG_temperature'], + base_url=PORTKEY_GATEWAY_URL, + default_headers=portkey_headers) model_variables['llm_no_rag'] = ChatOpenAI(api_key=api_key, model=llm_model, - temperature=model_variables['no_RAG_temperature']) + temperature=model_variables['no_RAG_temperature'], + base_url=PORTKEY_GATEWAY_URL, + default_headers=portkey_headers) tool_calling_supported = False match llm_model: case 'gpt-4-turbo' | 'gpt-4o': @@ -161,9 +181,16 @@ def select_model_variables(tenant): # model_variables['transcription_client'] = Groq(api_key=api_key) # model_variables['transcription_model'] = 'whisper-large-v3' - # Using OpenAI + # Using OpenAI for transcriptions + portkey_metadata = {'tenant_id': str(tenant.id)} + portkey_headers = createHeaders(api_key=current_app.config.get('PORTKEY_API_KEY'), + metadata=portkey_metadata, + provider='openai' + ) api_key = current_app.config.get('OPENAI_API_KEY') - model_variables['transcription_client'] = OpenAI(api_key=api_key) + model_variables['transcription_client'] = OpenAI(api_key=api_key, + base_url=PORTKEY_GATEWAY_URL, + default_headers=portkey_headers) model_variables['transcription_model'] = 'whisper-1' return model_variables diff --git a/config/config.py b/config/config.py index 64f17a8..8ad7d2b 100644 --- a/config/config.py +++ b/config/config.py @@ -148,9 +148,12 @@ class DevConfig(Config): # Groq API Keys GROQ_API_KEY = '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' - # Antrhopic API Keys + # Anthropic API Keys ANTHROPIC_API_KEY = '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' + # Portkey API Keys + PORTKEY_API_KEY = 'T2Dt4QTpgCvWxa1OftYCJtj7NcDZ' + # Unstructured settings UNSTRUCTURED_API_KEY = 'pDgCrXumYhM3CNvjvwV8msMldXC3uw' UNSTRUCTURED_BASE_URL = 'https://flowitbv-16c4us0m.api.unstructuredapp.io' diff --git a/docker/.DS_Store b/docker/.DS_Store index e2a72ab4c3707c79ea66ce8d44a03511d9c1d2e4..224f6046d0ba4e5c340cf0d6db1b35ee90fa6473 100644 GIT binary patch delta 448 zcmZn(XbIR*A}FgV9mv4Iz{HTkkd&M6;*yk;p9JJ{@I5$uonLP9L_sk&D08i#IHT6& zqk=h1?3R;bg(N0>3vscnI}s94H)m!14jNJ0eJyy#n@K!wK~K@yXF zg?ZQ@0+Zu~moTv#PIeU0nyfFv#l}4eq-?Uih#7*ZHF>_M@Z=pL$xQ4alN&|lChLmu zuqiGN0x7H)RhXPBio`8YV%*?d4)g&FLk>eeLpnn-vMb^>YNxGNm@FtJ#Rg>>ib*ju zKDe;iPi!9}hozyJj)I}7!DK~2$H}1*sw}*|ue2xUi_1)&CBeht&|@MtQvv7&kiaQ) bfnO3l%)DU}Cg+LEZdQ~0%1v9xZes)h!?uGx delta 448 zcmZn(XbIR*A}Gr<`4j^K0~13ELsD+Oi%U{YeiD$+;lj5v!b*DbL_sk&D08i#IHSPi zqk=h1Y>Ja(g(N0>3vsc{ew4I|Uu<%;kP3|1D%8Zp#ya_-kc0@bd1|jg3XeI0BqsX` z^RPh#CdUgeVPcb<>?oo&Szm;U?d2!1dG;b^2&UHL`J%#;cZei2vDr*+6qTE-E5gGz zNdoM?dQpYRxuQI5J;KQ#chrj(C^5XY%mMmC)w gy#Nw8g)Z<*f`^%HL&D@daoNpkl3%%L>)36K06{>F6951J diff --git a/docker/db/.DS_Store b/docker/db/.DS_Store index d68130f2ba10fb49d4aef53b62ff6e22f5ab3d6d..48f49008cc4e8c1279fe537f53691c500e332d0d 100644 GIT binary patch delta 122 zcmZoMXffEZhLuU<>g08-svPN7UuWtmA9I|%o>fXH#U&{xKZ${X0a;jLvOF6vqt<3! zHb+J#-O$Me>{4t86rLvWDNUZhE~5%z9&-fhVr3{|NM%T2$Ydxk$S@2}&d)6XiUNVb J=8Npc0su=5BX$4) delta 122 zcmZoMXffEZhLwpYbn-e@RSr|{`OkmJ9&?<$o>fXH#U&{xKZ${X0a;jLvOF6vqrhfe zHb+LL@+p%G*rnK3Yj~e67N0zUT}BncJmv`0#mZ2`kjjw4kjYS7kYN~{oS$0&6a|8Y J%@^5?1pt?$B@X}q diff --git a/requirements.txt b/requirements.txt index d5c6da6..0fd70a4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -74,4 +74,5 @@ pytube~=15.0.0 PyPDF2~=3.0.1 groq~=0.9.0 pydub~=0.25.1 -argparse~=1.4.0 \ No newline at end of file +argparse~=1.4.0 +portkey_ai~=1.7.0