Azure Container Apps 动态会话:安全运行 Python 代码的全新方式 ...

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

1. 技术背景先容

Azure Container Apps 动态会话(Dynamic Sessions for Azure Container Apps)为运行 Python 代码解释器提供了一个安全且可扩展的方式。通过使用 Hyper-V 隔离的沙盒环境,它答应我们安全地运行大概不可信的代码,同时保护主体系免受埋伏安全风险的陵犯。
动态会话内置了很多流行的 Python 数据科学和机器学习库,包罗 NumPy、pandas 和 scikit-learn 等,非常恰当处理惩罚数据分析及模型开发的任务。如果你必要一个支持动态代码实行的安全环境,动态会话将是一个理想的选择。
   更多信息:请参考官方文档 Azure Container App Sessions。
  
2. 核心原理分析



  • 动态沙盒环境:每个会话运行在 Hyper-V 隔离的容器中,为代码实行提供安全保障。
  • 自动化工具支持:官方提供了 SessionsPythonREPLTool,可直接与 Azure 会话池交互,动态实行 Python 代码。
  • 数据上传与效果可视化:支持将本地数据上传到会话中,并处理惩罚图片、JSON 等各种数据格式的效果。

3. 代码实现演示

以下我们分步实现一次动态会话的使用场景,包罗环境安装、代码实行、数据上传以及效果处理惩罚。
3.1 环境准备


  • 安装相干 Python 软件包:
    1. pip install -qU langchain-azure-dynamic-sessions langchain-openai langchainhub langchain langchain-community
    复制代码
  • 在 Azure CLI 中登录以进行身份认证:
    1. az login
    复制代码
  • 创建并配置动态会话池,获取会话池管理端点(POOL_MANAGEMENT_ENDPOINT)。
   注意:你必要按照 Azure 动态会话池配置文档 的步调完成会话池的创建。
  3.2 基本代码交互

以下是怎样通过 Python 使用 SessionsPythonREPLTool 动态实行代码的示例。
  1. import getpass
  2. from langchain_azure_dynamic_sessions import SessionsPythonREPLTool
  3. # 输入会话池管理端点
  4. POOL_MANAGEMENT_ENDPOINT = getpass.getpass(prompt="Enter Pool Management Endpoint: ")
  5. tool = SessionsPythonREPLTool(pool_management_endpoint=POOL_MANAGEMENT_ENDPOINT)
  6. # 执行简单的代码
  7. result = tool.invoke("6 * 7")
  8. print(result)
复制代码
实行效果:
  1. {
  2.   "result": 42,
  3.   "stdout": "",
  4.   "stderr": ""
  5. }
复制代码
invoke 返回的效果是一个 JSON,其中包含实行效果 result、尺度输出 stdout 和尺度错误输出 stderr。如果必要原始数据字典,可使用 execute() 方法。

3.3 数据上传与分析

我们可以将本地数据上传到动态会话的沙盒环境中,并对数据进行处理惩罚。
  1. import io
  2. import json
  3. # 准备数据
  4. data = {"important_data": [1, 10, -1541]}
  5. binary_io = io.BytesIO(json.dumps(data).encode("ascii"))
  6. # 上传数据文件
  7. upload_metadata = tool.upload_file(data=binary_io, remote_file_path="important_data.json")
  8. # 在动态会话中加载数据并处理
  9. code = f"""
  10. import json
  11. with open("{upload_metadata.full_path}") as f:
  12.     data = json.load(f)
  13. result = sum(data['important_data'])
  14. """
  15. execute_result = tool.execute(code)
  16. print(execute_result)
复制代码
实行效果:
  1. {
  2.   "$id": "2",
  3.   "status": "Success",
  4.   "stdout": "",
  5.   "stderr": "",
  6.   "result": -1530,
  7.   "executionTimeInMilliseconds": 12
  8. }
复制代码
此示例中,我们上传了一个 JSON 数据文件,并在沙盒环境中计算了数据的总和。

3.4 处理惩罚图片效果

动态会话还可以天生图片效果(如 Matplotlib 图表)。以下是一个简朴的画图示例。
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. code = """
  4. import numpy as np
  5. import matplotlib.pyplot as plt
  6. x = np.linspace(-1, 1, 400)
  7. y = np.sin(x)
  8. plt.plot(x, y)
  9. plt.title('Plot of sin(x)')
  10. plt.grid(True)
  11. plt.savefig('/mnt/data/sin_plot.png')
  12. """
  13. result = tool.execute(code)
  14. # 检查结果是否为图片
  15. if result["result"]["type"] == "image":
  16.     # 解码并显示图片
  17.     import base64
  18.     from PIL import Image
  19.     import io
  20.     base64_str = result["result"]["base64_data"]
  21.     img = Image.open(io.BytesIO(base64.b64decode(base64_str)))
  22.     img.show()
复制代码
以上代码将在动态会话中天生并返回图片,同时通过本地 PIL 库显示效果。

3.5 集成到智能代理

通过 LangChain 的动态会话工具,我们可以将其集成到智能代理中,增强交互逻辑。
  1. from langchain import hub
  2. from langchain.agents import create_tool_calling_agent, AgentExecutor
  3. from langchain_openai import ChatOpenAI
  4. llm = ChatOpenAI(model="gpt-4o", temperature=0)
  5. agent_prompt = hub.pull("hwchase17/openai-functions-agent")
  6. agent = create_tool_calling_agent(llm, [tool], agent_prompt)
  7. agent_executor = AgentExecutor(agent=agent, tools=[tool], verbose=True)
  8. # 执行复杂指令
  9. response = agent_executor.invoke(
  10.     {"input": "Calculate sin(pi). If negative, generate a random number in [0, 5]."}
  11. )
  12. print(response)
复制代码

4. 应用场景分析


  • 数据安全实行:动态会话提供隔离环境,恰当运行不可信代码或敏感分析任务。
  • 自动化交互:集成智能代理工具后,可轻松处理惩罚复杂指令,恰当企业级应用。
  • 数据科学:内置流行数据与机器学习库,提拔分析服从。

5. 实践建议



  • 安全优先:确保为动态会话分配最小权限的身份验证凭据。
  • 性能优化:优化代码逻辑,以淘汰沙盒资源消耗。
  • 日志监控:记录每次会话的实行过程,用于审计和调试。

如果碰到标题接待在品评区交流。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表