Skip to content

Commit

Permalink
bumped semantic kernel,openai and pydantic to last version
Browse files Browse the repository at this point in the history
  • Loading branch information
mateoperezrivera committed Dec 27, 2024
1 parent 60f1b13 commit fece219
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 16 deletions.
25 changes: 13 additions & 12 deletions orc/code_orchestration.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from orc.plugins.Conversation.Triage.wrapper import triage
from orc.plugins.ResponsibleAI.wrapper import fairness
from semantic_kernel.functions.kernel_arguments import KernelArguments
from semantic_kernel.functions import KernelPlugin
from shared.util import call_semantic_function, get_chat_history_as_messages, get_message, get_last_messages,get_possitive_int_or_default
from shared.util import get_blocked_list, create_kernel, get_usage_tokens, escape_xml_characters,get_secret
import asyncio
Expand Down Expand Up @@ -95,21 +96,21 @@ async def get_answer(history, security_ids,conversation_id):
arguments["history"] = json.dumps(get_last_messages(messages, CONVERSATION_MAX_HISTORY), ensure_ascii=False)
arguments["previous_answer"] = messages[-2]['content'] if len(messages) > 1 else ""
# import RAG plugins
conversationPluginTask = asyncio.create_task(asyncio.to_thread(kernel.import_plugin_from_prompt_directory, PLUGINS_FOLDER, "Conversation"))
retrievalPluginTask = asyncio.create_task(asyncio.to_thread(kernel.import_native_plugin_from_directory, PLUGINS_FOLDER, "Retrieval"))
raiNativePluginTask = asyncio.create_task(asyncio.to_thread(kernel.import_native_plugin_from_directory, f"{PLUGINS_FOLDER}/ResponsibleAI/Native", "Filters"))
conversationPluginTask = asyncio.create_task(asyncio.to_thread(kernel.add_plugin, KernelPlugin.from_directory(parent_directory=PLUGINS_FOLDER,plugin_name="Conversation")))
retrievalPluginTask = asyncio.create_task(asyncio.to_thread(kernel.add_plugin, KernelPlugin.from_directory(parent_directory=PLUGINS_FOLDER,plugin_name="Retrieval")))
raiNativePluginTask = asyncio.create_task(asyncio.to_thread(kernel.add_plugin, KernelPlugin.from_directory(parent_directory=f"{PLUGINS_FOLDER}/ResponsibleAI/Native",plugin_name="Filters")))
if(SECURITY_HUB_CHECK):
securityPluginTask = asyncio.create_task(asyncio.to_thread(kernel.import_native_plugin_from_directory, PLUGINS_FOLDER, "Security"))
securityPluginTask = asyncio.create_task(asyncio.to_thread(kernel.add_plugin, KernelPlugin.from_directory(parent_directory=PLUGINS_FOLDER,plugin_name="Security")))
if(RESPONSIBLE_AI_CHECK):
raiPluginTask = asyncio.create_task(asyncio.to_thread(kernel.import_plugin_from_prompt_directory,f"{PLUGINS_FOLDER}/ResponsibleAI", "Semantic"))
raiPluginTask = asyncio.create_task(asyncio.to_thread(kernel.add_plugin,KernelPlugin.from_directory(parent_directory=f"{PLUGINS_FOLDER}/ResponsibleAI",plugin_name="Semantic")))

#############################
# GUARDRAILS (QUESTION)
#############################

# AOAI Content filter validator
raiNativePlugin = await raiNativePluginTask
filterResult = await kernel.invoke(raiNativePlugin["ContentFliterValidator"], sk.KernelArguments(input=ask,apim_key=apim_key))
filterResult = await kernel.invoke(raiNativePlugin["ContentFliterValidator"], KernelArguments(input=ask,apim_key=apim_key))
if not (filterResult.value.passed):
logging.info(f"[code_orchest] filtered content found in question: {ask}.")
answer = get_message('BLOCKED_ANSWER')
Expand Down Expand Up @@ -141,7 +142,7 @@ async def get_answer(history, security_ids,conversation_id):
arguments["answer"] = answer
security_hub_key=await get_secret("securityHubKey")
securityPlugin = await securityPluginTask
security_check = await kernel.invoke(securityPlugin["QuestionSecurityCheck"], sk.KernelArguments(question=ask,security_hub_key=security_hub_key))
security_check = await kernel.invoke(securityPlugin["QuestionSecurityCheck"], KernelArguments(question=ask,security_hub_key=security_hub_key))
check_results = security_check.value["results"]
check_details = security_check.value["details"]
# New checks based on the updated requirements
Expand Down Expand Up @@ -173,7 +174,6 @@ async def get_answer(history, security_ids,conversation_id):
#############################
# RAG-FLOW
#############################

if not bypass_nxt_steps:

try:
Expand Down Expand Up @@ -222,7 +222,7 @@ async def get_answer(history, security_ids,conversation_id):
#run search retrieval function
retrievalPlugin= await retrievalPluginTask
if(SEARCH_RETRIEVAL):
search_function_result = await kernel.invoke(retrievalPlugin["VectorIndexRetrieval"], sk.KernelArguments(input=search_query,apim_key=apim_key,security_ids=security_ids))
search_function_result = await kernel.invoke(retrievalPlugin["VectorIndexRetrieval"], KernelArguments(input=search_query,apim_key=apim_key,security_ids=security_ids))
formatted_sources = search_function_result.value[:100].replace('\n', ' ')
escaped_sources = escape_xml_characters(search_function_result.value)
search_sources=escaped_sources
Expand All @@ -234,11 +234,12 @@ async def get_answer(history, security_ids,conversation_id):
else:
bing_api_key=await get_secret("bingapikey")
bing_custom_config_id=await get_secret("bingCustomConfigID")
bing_function_result= await kernel.invoke(retrievalPlugin["BingRetrieval"], sk.KernelArguments(input=search_query, bing_api_key=bing_api_key, bing_custom_config_id=bing_custom_config_id))
bing_function_result= await kernel.invoke(retrievalPlugin["BingRetrieval"], KernelArguments(input=search_query, bing_api_key=bing_api_key, bing_custom_config_id=bing_custom_config_id))
formatted_sources = bing_function_result.value[:100].replace('\n', ' ')
escaped_sources = escape_xml_characters(bing_function_result.value)
bing_sources=escaped_sources


if(RETRIEVAL_PRIORITY=="search"):
sources=search_sources+bing_sources
else:
Expand Down Expand Up @@ -348,7 +349,7 @@ async def get_answer(history, security_ids,conversation_id):
start_time = time.time()
arguments["answer"] = saxutils.escape(answer)
securityPlugin = await securityPluginTask
security_check = await kernel.invoke(securityPlugin["AnswerSecurityCheck"], sk.KernelArguments(question=ask, answer=answer, sources=sources,security_hub_key=security_hub_key))
security_check = await kernel.invoke(securityPlugin["AnswerSecurityCheck"], KernelArguments(question=ask, answer=answer, sources=sources,security_hub_key=security_hub_key))
check_results = security_check.value["results"]
check_details = security_check.value["details"]
# New checks based on the updated requirements
Expand Down Expand Up @@ -393,7 +394,7 @@ async def get_answer(history, security_ids,conversation_id):

if SECURITY_HUB_AUDIT:
logging.info(f"[code_orchest] security hub audit.")
await kernel.invoke(securityPlugin["Auditing"], sk.KernelArguments(question=ask, answer=answer, sources=sources,security_hub_key=security_hub_key,conversation_id=conversation_id,security_checks=security_check))
await kernel.invoke(securityPlugin["Auditing"], KernelArguments(question=ask, answer=answer, sources=sources,security_hub_key=security_hub_key,conversation_id=conversation_id,security_checks=str(security_check)))

answer_dict["prompt"] = prompt
answer_dict["sources"] = sources.replace('[', '{').replace(']', '}')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ async def ContentFliterValidator(
input: Annotated[str, "The user question"],
apim_key: Annotated[str, "The key to access the Azure OpenAI model"]
) -> Annotated[
ValidationResult,
NamedTuple,
"the output is a tuple with filter results"]:
filter_results = []
user_question = input
Expand Down
Empty file removed orc/plugins/Security/__init__.py
Empty file.
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ azure-functions==1.17.0
azure-identity==1.15.0
azure-keyvault-secrets==4.7.0
numpy==1.26.2
openai==1.55.3
semantic-kernel==0.9.4b1
openai==1.58.1
semantic-kernel==1.17.1
requests==2.32.0
tiktoken==0.5.2
tenacity==8.2.3
azure-cognitiveservices-search-customsearch==0.3.1
beautifulsoup4==4.12.3
pydantic==2.3.0
pydantic==2.10.4
nbstripout==0.8.1
nbconvert==7.16.4

0 comments on commit fece219

Please sign in to comment.