File size: 3,671 Bytes
207b8e0 4e510e1 ed1f8da b353c0d 4e510e1 9dfac8f ed1f8da b353c0d 88ff633 f3a5cd4 88ff633 b353c0d e9b73c4 9dfac8f ed1f8da 1d582be ed1f8da 9dfac8f 4e510e1 b353c0d e3bfdb0 5898861 afcfca9 83ef605 018423d b353c0d e3bfdb0 b353c0d 018423d 9dfac8f b353c0d ed1f8da |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import requests
from langchain_openai import ChatOpenAI
import json
from langchain_core.prompts import ChatPromptTemplate
from langchain_groq import ChatGroq
from langchain.chains import ConversationChain
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_community.llms.cloudflare_workersai import CloudflareWorkersAI
from langchain_cohere import ChatCohere
def langchainConversation(conversation):
prompts = []
for message in conversation:
prompts.append((message['role'],message['context']))
chat_template = ChatPromptTemplate.from_messages(prompts)
return chat_template.format_messages()
def segmind_input_parser(input):
toreturn = []
for thisdict in input:
if(thisdict['role'] == 'ai'):
toreturn.append({'role':'assistant','content':thisdict['context']})
else:
toreturn.append({'role':thisdict['role'],'content':thisdict['context']})
return toreturn
def workers_input_parser(input):
toreturn = []
for thisdict in input:
toreturn.append({'role':thisdict['role'],'content':thisdict['context']})
return toreturn
def segmind_output_parser(input):
return {"content": input['choices'][0]['message']['content'], "additional_kwargs": {}, "response_metadata": {}, "type": "ai", "name": None, "id": input['id'], "example": False, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": {"input_tokens": input['usage']['prompt_tokens'], "output_tokens": input['usage']['completion_tokens'], "total_tokens": input['usage']['total_tokens']}}
def converse(conversation,provider,model,key,other:dict={}):
if(provider=='groq'):
chat = ChatGroq(temperature=0, groq_api_key=key, model_name=model)
elif(provider=='gemini'):
chat = ChatGoogleGenerativeAI(model=model,google_api_key=key)
elif(provider=='cohere'):
chat = ChatCohere(model=model,cohere_api_key=key)
elif(provider=='lepton'):
url = f'https://{model}.lepton.run/api/v1/'
print(url)
chat = ChatOpenAI(openai_api_base = url,openai_api_key=key)
elif(provider == 'cloudflare'):
try:
account_id = key.split('~')[0]
api_token = key.split('~')[1]
except:
raise Exception('Invalid Accound Id or api token')
API_BASE_URL = f"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/"
headers = {"Authorization": f"Bearer {api_token}"}
def run(model, inputs):
input = { "messages": inputs }
response = requests.post(f"{API_BASE_URL}{model}", headers=headers, json=input)
return response.json()
inputs = workers_input_parser(conversation)
output = run(model, inputs)
print(output)
return json.dumps({'content':output['result']['response']},indent=4)
elif(provider == 'openrouter'):
chat = ChatOpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=key,
model=model
)
elif(provider == 'segmind'):
url = f"https://api.segmind.com/v1/{model}"
# Request payload
data = {
"messages": segmind_input_parser(conversation)
}
response = requests.post(url, json=data, headers={'x-api-key': key})
output = json.loads(response.text)
print(json.dumps(output,indent=4))
return json.dumps(segmind_output_parser(output),indent=4)
else:
return json.dumps({'content':'unspported Provider'})
return json.dumps(json.loads(chat.invoke(langchainConversation(conversation)).json()),indent=4)
|