#Python chatbot using semantic-kernel
- `- This is the code of chatbot in python using semantic kernel which gives answer via chat-GPT , but I want to add skill in this like I want to integrate it with my SQL server ,and then I want to give questions from my database to it like for ex. (what is the age of person_name in table_name) and it should give answer of my question using my database.
import asyncio
import semantic_kernel as sk
import semantic_kernel.connectors.ai.open_ai as sk_oai
sk_prompt = """
ChatBot can have a conversation with you about any topic.
It can give explicit instructions or say 'I don't know'
when it doesn't know the answer.
{{$chat_history}}
User:\> {{$user_input}}
ChatBot:\>
"""
kernel = sk.Kernel()
//in this we give our api key and our org id from open ai
api_key, org_id = sk.openai_settings_from_dot_env()
kernel.add_text_completion_service(
"davinci-003", sk_oai.OpenAITextCompletion("text-davinci-003", api_key, org_id)
)
//in this according to tokens it will give more punctuations and by temperature it gives more creative answer as high value more creative answer
prompt_config = sk.PromptTemplateConfig.from_completion_parameters(
max_tokens=2000, temperature=0.7, top_p=0.4
)
prompt_template = sk.PromptTemplate(
sk_prompt, kernel.prompt_template_engine, prompt_config
)
//creating semantic function that runs
function_config = sk.SemanticFunctionConfig(prompt_config, prompt_template)
chat_function = kernel.register_semantic_function("ChatBot", "Chat", function_config)
//code to continue chat
async def chat(context_vars: sk.ContextVariables) -\> bool:
try:
user_input = input("User:\> ")
context_vars\["user_input"\] = user_input
except KeyboardInterrupt:
print("\\n\\nExiting chat...")
return False
except EOFError:
print("\\n\\nExiting chat...")
return False
if user_input == "exit":
print("\n\nExiting chat...")
return False
answer = await kernel.run_async(chat_function, input_vars=context_vars)
context_vars["chat_history"] += f"\nUser:> {user_input}\nChatBot:> {answer}\n"
print(f"ChatBot:> {answer}")
return True
async def main() -\> None:
context = sk.ContextVariables()
context\["chat_history"\] = ""
chatting = True
while chatting:
chatting = await chat(context)
if __name__ == "__main__":
asyncio.run(main())