Skip to main content
代码解释器为智能体提供了强大的代码执行和分析能力,支持多种编程语言的代码运行、调试和结果分析,让 AI 助手能够帮助用户解决编程问题。

功能特性

多语言支持

  • Python(主要支持)
  • JavaScript/Node.js
  • R 语言
  • SQL 查询
  • Shell 脚本
  • Markdown 渲染

代码执行能力

  • 实时代码运行
  • 错误诊断和调试
  • 结果可视化
  • 数据分析和处理
  • 图表生成

安全沙箱环境

  • 隔离执行环境
  • 资源限制控制
  • 安全权限管理
  • 超时保护机制

基础用法

Python 代码执行

from zai import ZhipuAiClient

client = ZhipuAiClient(api_key="your_api_key")

# 基础代码执行
response = client.chat.completions.create(
    model="glm-4.7",
    messages=[
        {
            "role": "user",
            "content": "请帮我计算斐波那契数列的前 10 项,并绘制图表"
        }
    ],
    tools=[
        {
            "type": "code_interpreter"
        }
    ]
)

print(response.choices[0].message.content)

高级应用场景

在使用代码解释器进行复杂数据分析时,请确保数据的安全性和隐私保护。

数据科学助手

class DataScienceAssistant:
    def __init__(self, api_key):
        self.client = ZhipuAiClient(api_key=api_key)
    
    def analyze_dataset(self, data_description, analysis_requirements):
        """分析数据集"""
        prompt = f"""
        数据描述:{data_description}
        分析需求:{analysis_requirements}
        
        请执行以下数据分析任务:
        1. 数据探索性分析(EDA)
        2. 数据清洗和预处理
        3. 统计分析和可视化
        4. 模式识别和洞察发现
        5. 生成分析报告
        
        请使用 Python 代码实现,包含详细的注释和解释。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def build_ml_model(self, problem_type, data_info, target_variable):
        """构建机器学习模型"""
        prompt = f"""
        问题类型:{problem_type}
        数据信息:{data_info}
        目标变量:{target_variable}
        
        请构建一个机器学习模型:
        1. 数据预处理和特征工程
        2. 模型选择和训练
        3. 模型评估和优化
        4. 结果可视化
        5. 模型解释和建议
        
        请提供完整的 Python 代码实现。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def create_dashboard(self, data_source, dashboard_requirements):
        """创建数据仪表板"""
        prompt = f"""
        数据源:{data_source}
        仪表板需求:{dashboard_requirements}
        
        请创建一个交互式数据仪表板:
        1. 数据加载和处理
        2. 关键指标计算
        3. 多种图表类型展示
        4. 交互式筛选功能
        5. 响应式布局设计
        
        使用 Python 的 Plotly 或 Streamlit 库实现。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content

# 使用示例
assistant = DataScienceAssistant("your_api_key")
result = assistant.analyze_dataset(
    "销售数据包含日期、产品、销量、价格等字段",
    "分析销售趋势,识别热销产品,预测未来销量"
)
print(result)

算法学习助手

class AlgorithmTutor:
    def __init__(self, api_key):
        self.client = ZhipuAiClient(api_key=api_key)
    
    def explain_algorithm(self, algorithm_name, difficulty_level="intermediate"):
        """解释算法原理"""
        prompt = f"""
        算法名称:{algorithm_name}
        难度级别:{difficulty_level}
        
        请详细解释这个算法:
        1. 算法原理和思想
        2. 时间和空间复杂度分析
        3. Python 代码实现(带详细注释)
        4. 实际应用场景
        5. 优缺点分析
        6. 相关算法比较
        
        请提供可运行的代码示例和测试用例。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def solve_coding_problem(self, problem_description, constraints=None):
        """解决编程问题"""
        constraints_text = f"\n约束条件:{constraints}" if constraints else ""
        
        prompt = f"""
        问题描述:{problem_description}{constraints_text}
        
        请解决这个编程问题:
        1. 问题分析和解题思路
        2. 算法设计和选择
        3. 代码实现(多种解法)
        4. 复杂度分析
        5. 测试用例验证
        6. 优化建议
        
        请提供完整的 Python 解决方案。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def visualize_algorithm(self, algorithm_name, input_data):
        """算法可视化"""
        prompt = f"""
        算法:{algorithm_name}
        输入数据:{input_data}
        
        请创建这个算法的可视化演示:
        1. 算法执行步骤的动态展示
        2. 数据结构变化过程
        3. 关键操作的高亮显示
        4. 性能指标的实时更新
        5. 交互式参数调整
        
        使用 matplotlib 或 plotly 创建动画效果。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content

# 使用示例
algo_tutor = AlgorithmTutor("your_api_key")
explanation = algo_tutor.explain_algorithm("快速排序", "beginner")
print(explanation)

数据可视化专家

class DataVisualizationExpert:
    def __init__(self, api_key):
        self.client = ZhipuAiClient(api_key=api_key)
    
    def create_chart(self, data_description, chart_type, customization=None):
        """创建图表"""
        custom_text = f"\n定制要求:{customization}" if customization else ""
        
        prompt = f"""
        数据描述:{data_description}
        图表类型:{chart_type}
        {custom_text}
        
        请创建专业的数据可视化图表:
        1. 数据准备和处理
        2. 图表设计和布局
        3. 颜色搭配和样式
        4. 交互功能添加
        5. 标题和标签优化
        6. 响应式设计
        
        使用 matplotlib、seaborn 或 plotly 库实现。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def create_infographic(self, topic, data_points, style="modern"):
        """创建信息图表"""
        prompt = f"""
        主题:{topic}
        数据要点:{data_points}
        风格:{style}
        
        请创建一个信息图表:
        1. 整体布局设计
        2. 数据层次结构
        3. 视觉元素搭配
        4. 图标和插图
        5. 文字排版
        6. 色彩方案
        
        使用 Python 的可视化库创建专业的信息图表。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content
    
    def analyze_chart_effectiveness(self, chart_description, target_audience):
        """分析图表效果"""
        prompt = f"""
        图表描述:{chart_description}
        目标受众:{target_audience}
        
        请分析图表的有效性:
        1. 信息传达清晰度
        2. 视觉吸引力
        3. 数据准确性
        4. 受众适应性
        5. 改进建议
        6. 替代方案
        
        请提供详细的分析报告和优化建议。
        """
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=[{"role": "user", "content": prompt}],
            tools=[{"type": "code_interpreter"}]
        )
        
        return response.choices[0].message.content

# 使用示例
viz_expert = DataVisualizationExpert("your_api_key")
chart = viz_expert.create_chart(
    "公司过去5年的营收、利润和员工数量数据",
    "组合图表(柱状图+折线图)",
    "企业风格,蓝色主题,包含趋势分析"
)
print(chart)

高级功能

多步骤代码执行

class MultiStepCodeExecutor:
    def __init__(self, api_key):
        self.client = ZhipuAiClient(api_key=api_key)
        self.conversation_history = []
    
    def execute_step(self, step_description, code=None):
        """执行单个步骤"""
        if code:
            message_content = f"{step_description}\n\n```python\n{code}\n```"
        else:
            message_content = step_description
        
        self.conversation_history.append({
            "role": "user",
            "content": message_content
        })
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=self.conversation_history,
            tools=[{"type": "code_interpreter"}]
        )
        
        assistant_message = response.choices[0].message
        self.conversation_history.append({
            "role": "assistant",
            "content": assistant_message.content
        })
        
        return assistant_message.content
    
    def execute_workflow(self, workflow_steps):
        """执行完整工作流"""
        results = []
        
        for i, step in enumerate(workflow_steps):
            print(f"执行步骤 {i+1}: {step['description']}")
            
            result = self.execute_step(
                step['description'],
                step.get('code')
            )
            
            results.append({
                "step": i+1,
                "description": step['description'],
                "result": result
            })
        
        return results
    
    def get_summary(self):
        """获取执行总结"""
        summary_prompt = """
        请总结整个代码执行过程:
        1. 主要完成的任务
        2. 关键结果和发现
        3. 遇到的问题和解决方案
        4. 最终输出和结论
        5. 后续建议
        """
        
        self.conversation_history.append({
            "role": "user",
            "content": summary_prompt
        })
        
        response = self.client.chat.completions.create(
            model="glm-4.7",
            messages=self.conversation_history
        )
        
        return response.choices[0].message.content

# 使用示例
executor = MultiStepCodeExecutor("your_api_key")

workflow = [
    {
        "description": "加载和探索数据集",
        "code": """
        import pandas as pd
        import numpy as np
        
        # 创建示例数据
        data = {
            'date': pd.date_range('2023-01-01', periods=100),
            'sales': np.random.normal(1000, 200, 100),
            'marketing_spend': np.random.normal(500, 100, 100)
        }
        df = pd.DataFrame(data)
        print(df.head())
        print(df.info())
        """
    },
    {
        "description": "数据清洗和预处理"
    },
    {
        "description": "探索性数据分析"
    },
    {
        "description": "建立预测模型"
    },
    {
        "description": "模型评估和可视化"
    }
]

results = executor.execute_workflow(workflow)
summary = executor.get_summary()

print("\n=== 执行总结 ===")
print(summary)

实践建议

代码组织和结构

模块化设计
# 将复杂任务分解为小的函数
def load_data():
    pass

def process_data(data):
    pass

def visualize_results(results):
    pass
错误处理
try:
    result = risky_operation()
except SpecificException as e:
    print(f"处理错误: {e}")
    # 提供备选方案
性能优化
# 使用向量化操作
import numpy as np
result = np.sum(array)  # 而不是循环

安全考虑

  • 输入验证:始终验证用户输入
  • 资源限制:避免无限循环和内存泄漏
  • 权限控制:不执行危险的系统操作
  • 数据保护:不处理敏感信息
  • 沙箱环境:利用安全的执行环境
  • 代码审查:定期检查代码安全性

调试技巧

  • 逐步执行:将复杂问题分解为小步骤
  • 打印调试:在关键位置添加输出
  • 异常捕获:使用try-except处理错误
  • 单元测试:为每个函数编写测试
  • 日志记录:使用 logging 模块记录执行过程
  • 断点调试:在关键位置设置检查点

注意事项

执行限制

  • 运行时间:单次执行有时间限制
  • 内存使用:避免创建过大的数据结构
  • 网络访问:受限的外部网络访问
  • 文件操作:临时文件系统,执行后清理
  • 计算资源:合理使用 CPU 和内存资源
  • 并发限制:避免过多的并行操作

安全约束

  • 系统调用:禁止危险的系统操作
  • 文件访问:限制文件读写范围
  • 网络请求:受控的网络访问
  • 进程管理:不能启动外部进程
  • 权限控制:严格的执行权限管理
  • 数据隔离:确保数据安全和隐私

性能优化

  • 算法选择:选择合适的算法和数据结构
  • 内存管理:及时释放不需要的变量
  • 并行处理:适当使用多线程或向量化
  • 缓存策略:避免重复计算
  • 代码优化:使用高效的编程模式
  • 资源监控:实时监控资源使用情况
在编写代码时,建议先进行小规模测试,确认逻辑正确后再处理大数据集。同时,添加适当的注释和错误处理,提高代码的可读性和健壮性。
代码解释器在沙箱环境中运行,某些系统级操作和外部网络访问可能受限。请确保代码符合安全规范,避免执行可能造成安全风险的操作。