ToB企服应用市场:ToB评测及商务社交产业平台

标题: Azure Container Apps 动态会话:安全运行 Python 代码的全新方式 [打印本页]

作者: 圆咕噜咕噜    时间: 2025-1-19 11:07
标题: Azure Container Apps 动态会话:安全运行 Python 代码的全新方式
1. 技术背景先容

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



3. 代码实现演示

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

   注意:你必要按照 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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4