资讯动态

AI智能体在药物发现中的应用:从概念到AWS云原生实现

发布时间:2026/8/13 9:01:14 来源:尧图企业网站定制
在药物研发这个高投入、长周期的领域如何利用前沿技术加速进程、降低成本是每一家生物制药公司面临的共同挑战。近期全球领先的生物制药公司诺和诺德Novo Nordisk宣布与亚马逊云科技AWS深化合作将智能体AI Agent技术引入其药物发现流程这一举措标志着AI在生命科学领域的应用正从辅助分析迈向自主决策的新阶段。对于开发者、数据科学家以及对AI生物医药交叉领域感兴趣的技术人而言这不仅是一个行业新闻更是一个值得深入探究的技术风向标。本文将深入拆解“智能体AI引入药物发现”背后的技术逻辑、实现路径以及开发者可以如何借鉴其架构思想。我们将从核心概念入手逐步构建一个简化的、可运行的药物发现智能体原型并探讨其工程化落地的关键考量。1. 背景与核心概念为什么是智能体AI Agent在理解具体技术之前我们需要厘清几个关键概念传统AI在药物发现中的应用、大语言模型LLM的局限以及智能体AI Agent如何突破这些局限。1.1 传统AI在药物发现中的角色长期以来AI尤其是机器学习ML已在药物发现的多个环节发挥作用靶点识别通过分析基因组学、蛋白质组学数据预测潜在的疾病治疗靶点。化合物筛选使用虚拟筛选Virtual Screening模型从数百万化合物库中快速预测可能与靶点结合的小分子。性质预测利用定量构效关系QSAR模型预测化合物的吸收、分布、代谢、排泄和毒性ADMET性质。临床试验优化分析患者数据优化临床试验设计。然而这些应用大多是“单点式”的。每个模型解决一个特定任务任务之间的串联、决策和迭代仍需大量人工介入。例如一个虚拟筛选模型输出候选化合物列表后需要化学家手动分析结果再决定进行下一轮怎样的优化或实验流程割裂效率瓶颈明显。1.2 大语言模型LLM的能力与边界以GPT、Claude等为代表的LLM展现了强大的自然语言理解和生成能力在阅读文献、生成报告、编写代码方面表现出色。在药物发现中LLM可以解读科研论文总结靶点信息。将化学家的自然语言描述转化为结构查询语言如SMILES。生成实验方案或数据分析脚本。但LLM本质是“对话式”和“反应式”的。它被动响应用户的提问缺乏自主规划、执行多步骤任务、利用工具以及从结果中学习并调整策略的能力。它无法自主完成“从靶点出发设计、评估、优化化合物直至获得苗头化合物”的完整闭环。1.3 智能体AI Agent具备自主性的“虚拟研究员”智能体AI Agent正是为了突破上述限制而生的概念。一个AI智能体通常具备以下核心能力规划Planning将复杂目标如“为XX靶点寻找先导化合物”分解为一系列可执行的子任务查询数据库、运行模型、分析结果。工具使用Tool Use能够调用外部工具、API或函数来执行具体操作如调用化学信息学库计算分子描述符、调用云上的高性能计算HPC集群运行分子动力学模拟、查询内部数据库。记忆与学习Memory Learning拥有短期当前会话和长期跨项目记忆能够从历史行动和结果中学习优化未来的决策策略。自主迭代Autonomous Iteration根据任务执行的结果如化合物评分自主决定下一步行动如对分子进行特定修饰形成“思考-行动-观察”的循环。将智能体引入药物发现相当于组建了一个不知疲倦、知识渊博且能调用各种专业工具的虚拟药物化学研究员团队它可以7x24小时地运行设计-测试-学习的循环极大加速了早期发现流程。诺和诺德与AWS的合作正是旨在构建这样一个基于云的、可扩展的智能体平台以驾驭其庞大的科研数据和计算资源。2. 环境准备与架构概览在动手构建一个简化版的药物发现智能体之前我们需要明确技术栈和云环境。诺和诺德选择AWS正是看中了其全托管的AI/ML服务、强大的计算能力和完善的安全合规体系。我们的演示将借鉴这一架构思想。2.1 技术栈与云服务选择我们的原型将使用以下核心服务与工具这些在AWS上均有对应的托管服务或可轻松部署组件功能AWS对应服务/替代方案智能体核心Orchestrator任务规划、工具调度、决策循环。可使用Amazon SageMaker部署自定义容器或基于AWS Lambda构建无服务器工作流。大语言模型LLM提供自然语言理解、任务分解、推理能力。Amazon Bedrock提供Claude、Llama等多家模型API或自托管开源模型于Amazon SageMaker。工具集Tools执行具体任务如分子处理、性质预测。使用开源化学信息学库如RDKit构建函数部署为AWS Lambda或SageMaker Endpoint。记忆存储Memory存储对话历史、任务状态、分子数据。Amazon DynamoDB键值存储存会话状态Amazon S3存储分子结构文件、结果数据。工作流编排协调多个步骤和服务的执行顺序。AWS Step Functions可视化工作流编排。2.2 本地开发环境准备为了便于开发和演示我们首先在本地搭建一个模拟环境。Python环境建议使用Python 3.9或以上版本。使用conda或venv创建独立的虚拟环境。conda create -n drug_discovery_agent python3.9 conda activate drug_discovery_agent安装核心库pip install boto3 # AWS SDK for Python pip install langchain # 用于构建智能体框架可选但能极大简化开发 pip install rdkit-pypi # 化学信息学核心库注意安装可能需要额外步骤请参考RDKit官方文档 pip install pydantic # 数据验证 pip install numpy pandas # 数据处理AWS凭证配置确保本地已配置好具有相应权限的AWS CLI凭证。这将用于后续调用Bedrock等服务。aws configure # 输入你的 Access Key, Secret Key, Region (如 us-east-1)3. 核心组件拆解构建智能体的四大支柱一个基本的药物发现智能体可以由以下四个核心部分组成我们将其模块化实现。3.1 支柱一任务规划与分解器Planner这是智能体的大脑。它接收一个高层目标如“寻找能抑制蛋白X的类药分子”并将其分解为顺序或并行的子任务链。我们可以使用LangChain的PlanAndExecute模式或者基于Pydantic模型自定义一个简单的规划器。# planner.py from typing import List, Dict, Any from pydantic import BaseModel, Field from langchain.chat_models import BedrockChat # 假设使用Bedrock Claude from langchain.schema import SystemMessage, HumanMessage class SubTask(BaseModel): 子任务数据模型 id: int description: str # 任务描述如 “查询已知活性分子” tool_name: str # 需要调用的工具名如 “query_known_ligands” tool_inputs: Dict[str, Any] Field(default_factorydict) # 工具输入参数 depends_on: List[int] Field(default_factorylist) # 依赖的任务ID class TaskPlanner: def __init__(self, llm): self.llm llm self.system_prompt 你是一个专业的药物化学研究规划专家。你的任务是将用户的高层药物发现目标分解为一系列具体的、可执行的子任务。 可用的工具包括 - query_known_ligands: 根据靶点名称查询已知的活性分子。 - generate_analogues: 基于一个种子分子生成一系列结构类似的衍生物。 - predict_properties: 预测给定分子的ADMET等关键性质。 - filter_molecules: 根据性质预测结果过滤分子。 请输出一个JSON格式的任务列表每个任务包含id, description, tool_name, tool_inputs, depends_on字段。 def plan(self, goal: str) - List[SubTask]: 根据目标生成任务计划 messages [ SystemMessage(contentself.system_prompt), HumanMessage(contentf目标{goal}) ] # 这里简化处理实际应让LLM返回结构化JSON并解析 # 为演示我们返回一个硬编码的计划 plan [ SubTask(id1, description查询针对靶点‘EGFR’的已知活性分子作为起点, tool_namequery_known_ligands, tool_inputs{target: EGFR}), SubTask(id2, description基于查询到的活性分子生成结构衍生物, tool_namegenerate_analogues, tool_inputs{seed_smiles: None}, depends_on[1]), SubTask(id3, description预测所有生成衍生物的关键ADMET性质, tool_namepredict_properties, tool_inputs{molecules: None}, depends_on[2]), SubTask(id4, description根据类药五规则和毒性预测过滤分子, tool_namefilter_molecules, tool_inputs{property_thresholds: {logP: 5, MW: 500}}, depends_on[3]), ] return plan3.2 支柱二专业化工具集Tools工具是智能体的手和脚。每个工具都是一个独立的函数执行一项具体的科学计算或数据操作。# tools.py from rdkit import Chem from rdkit.Chem import Descriptors, QED from typing import List, Optional import random class DrugDiscoveryTools: 药物发现专用工具集 staticmethod def query_known_ligands(target: str) - List[str]: 模拟从数据库查询已知活性分子返回SMILES字符串 # 实际应用中这里会连接ChEMBL、PubChem或内部数据库 # 此处返回模拟数据 known_ligands { EGFR: [CN1CNC2C1C(O)N(C(O)N2C)C, Cc1ccc(cc1)S(O)(O)Nc2nccc(n2)c3cccnc3], # 吉非替尼类似物 DRD2: [CN1CCC[CH]1c2ccc(cc2)C(O)C3CCCN3], # 氟哌啶醇类似物 } return known_ligands.get(target, [CCO, CC(O)O]) # 默认返回乙醇和乙酸 staticmethod def generate_analogues(seed_smiles: str, num_variants: int 10) - List[str]: 基于种子分子生成衍生物简化版随机修改 mol Chem.MolFromSmiles(seed_smiles) if not mol: return [] analogues [] for _ in range(num_variants): # 这是一个极度简化的演示。真实场景会使用更复杂的遗传算法、片段连接或深度学习模型。 # 此处仅随机决定是否添加一个甲基 new_mol Chem.RWMol(mol) if random.random() 0.5: # 随机选择一个原子如果不是氢尝试添加一个甲基CH3 atom_idx random.randint(0, new_mol.GetNumAtoms()-1) atom new_mol.GetAtomWithIdx(atom_idx) if atom.GetSymbol() ! H: new_mol.AddAtom(Chem.Atom(6)) # 添加碳原子 new_mol.AddAtom(Chem.Atom(6)) # 再添加一个碳模拟甲基 # 简化连接逻辑...实际应处理键级和氢原子 try: smi Chem.MolToSmiles(new_mol) if smi and smi ! seed_smiles: analogues.append(smi) except: continue return list(set(analogues))[:5] # 去重并限制数量 staticmethod def predict_properties(molecules_smiles: List[str]) - List[Dict]: 预测分子性质使用RDKit计算简单的描述符 results [] for smi in molecules_smiles: mol Chem.MolFromSmiles(smi) if mol: prop { smiles: smi, MW: Descriptors.MolWt(mol), # 分子量 LogP: Descriptors.MolLogP(mol), # 脂水分配系数 HBD: Descriptors.NumHDonors(mol), # 氢键供体数 HBA: Descriptors.NumHAcceptors(mol), # 氢键受体数 QED: QED.qed(mol), # 类药性评分0-1 } results.append(prop) return results staticmethod def filter_molecules(property_list: List[Dict], thresholds: Dict) - List[Dict]: 根据类药五规则Rule of Five等阈值过滤分子 filtered [] for prop in property_list: if (prop[MW] thresholds.get(MW, 500) and prop[LogP] thresholds.get(logP, 5) and prop[HBD] thresholds.get(HBD, 5) and prop[HBA] thresholds.get(HBA, 10) and prop[QED] thresholds.get(QED_min, 0.5)): filtered.append(prop) return filtered3.3 支柱三执行引擎与记忆Executor Memory执行引擎负责按规划调用工具并管理任务状态。记忆模块则记录整个探索过程供后续分析和学习。# executor.py from typing import List, Dict, Any from planner import TaskPlanner, SubTask from tools import DrugDiscoveryTools import json class AgentExecutor: def __init__(self, planner: TaskPlanner, tools: DrugDiscoveryTools): self.planner planner self.tools tools self.memory { goal: , subtask_results: {}, # 存储每个子任务的结果 final_candidates: [] } def execute_goal(self, goal: str) - Dict: 执行一个高层目标 self.memory[goal] goal print(f开始执行目标: {goal}) # 1. 规划 plan self.planner.plan(goal) print(f生成任务计划共{len(plan)}个子任务。) # 2. 顺序执行简化版未处理依赖图的并行执行 for task in plan: print(f\n执行任务 {task.id}: {task.description}) result self._execute_task(task) self.memory[subtask_results][task.id] result # 将结果传递给后续依赖此任务的任务简化处理 self._update_task_inputs(plan, task.id, result) # 3. 汇总最终结果 final_task_id plan[-1].id self.memory[final_candidates] self.memory[subtask_results].get(final_task_id, []) print(f\n目标执行完成。最终筛选出 {len(self.memory[final_candidates])} 个候选分子。) return self.memory def _execute_task(self, task: SubTask) - Any: 执行单个任务 tool_name task.tool_name inputs task.tool_inputs if tool_name query_known_ligands: return self.tools.query_known_ligands(**inputs) elif tool_name generate_analogues: # 需要从上游任务获取seed_smiles seed_smiles inputs.get(seed_smiles) if not seed_smiles and self.memory[subtask_results].get(1): # 假设任务1的结果是种子分子列表取第一个 seed_smiles self.memory[subtask_results][1][0] inputs[seed_smiles] seed_smiles return self.tools.generate_analogues(**inputs) elif tool_name predict_properties: molecules inputs.get(molecules) if not molecules and self.memory[subtask_results].get(2): molecules self.memory[subtask_results][2] inputs[molecules_smiles] molecules # 注意参数名匹配 return self.tools.predict_properties(molecules_smilesmolecules) elif tool_name filter_molecules: property_list inputs.get(property_list) if not property_list and self.memory[subtask_results].get(3): property_list self.memory[subtask_results][3] inputs[property_list] property_list return self.tools.filter_molecules(**inputs) else: raise ValueError(f未知工具: {tool_name}) def _update_task_inputs(self, plan: List[SubTask], completed_task_id: int, result: Any): 将已完成任务的结果更新到后续依赖它的任务的输入中简化逻辑 for task in plan: if completed_task_id in task.depends_on: if task.tool_name generate_analogues and seed_smiles not in task.tool_inputs: task.tool_inputs[seed_smiles] result[0] if result else None elif task.tool_name predict_properties and molecules not in task.tool_inputs: task.tool_inputs[molecules] result elif task.tool_name filter_molecules and property_list not in task.tool_inputs: task.tool_inputs[property_list] result3.4 支柱四与LLM集成Orchestrator with LLM将以上组件与LLM如通过Amazon Bedrock调用的Claude结合形成一个可以理解自然语言指令、自主规划并执行的完整智能体。# main.py from planner import TaskPlanner from tools import DrugDiscoveryTools from executor import AgentExecutor # 注意以下LangChain导入为示例实际需根据Bedrock设置配置LLM # from langchain.chat_models import BedrockChat # from langchain.llms.bedrock import Bedrock # 由于直接调用Bedrock需要具体配置此处我们用模拟LLM替代 class MockLLM: 模拟LLM仅用于演示流程 def __call__(self, messages): # 在实际中这里会调用Bedrock API print(模拟调用LLM进行规划...) return PLAN_RECEIVED def main(): # 1. 初始化组件 # llm BedrockChat(model_idanthropic.claude-v2, region_nameus-east-1) llm MockLLM() planner TaskPlanner(llm) tools DrugDiscoveryTools() executor AgentExecutor(planner, tools) # 2. 定义药物发现目标 goal 寻找能有效抑制EGFR靶点且具有良好类药性的小分子候选化合物 # 3. 执行智能体工作流 final_report executor.execute_goal(goal) # 4. 输出结果 print(\n *50) print(智能体执行报告) print(*50) print(f目标: {final_report[goal]}) print(f最终候选分子数量: {len(final_report[final_candidates])}) if final_report[final_candidates]: print(前3个候选分子信息:) for i, cand in enumerate(final_report[final_candidates][:3]): print(f {i1}. SMILES: {cand[smiles]}) print(f 分子量(MW): {cand[MW]:.2f}, LogP: {cand[LogP]:.2f}, QED: {cand[QED]:.3f}) print(*50) if __name__ __main__: main()运行上述main.py你将看到一个简化的药物发现智能体工作流程模拟。它从目标出发自动规划任务链调用工具执行并最终输出过滤后的候选分子列表及其性质。4. 云端部署与AWS服务集成本地原型验证后下一步是将其部署到云端实现可扩展、可管理、生产就绪的服务。这正是诺和诺德与AWS合作的核心。4.1 架构升级从脚本到云原生服务我们将上述模块部署到AWS构建一个无服务器Serverless或容器化的智能体平台。参考架构图文字描述用户/系统 - Amazon API Gateway (接收请求) | v AWS Lambda (智能体协调器) | | (规划、调用工具、管理状态) v ----------------------- | 工具层 (Tool Layer) | ----------------------- | Lambda/SageMaker | - 调用 Amazon Bedrock (LLM) | Lambda | - 执行 RDKit 计算 | SageMaker Endpoint | - 运行深度学习预测模型 | AWS Batch/Step Fn | - 调度分子动力学模拟作业 ----------------------- | | (存储中间结果和最终数据) v Amazon DynamoDB (任务状态) Amazon S3 (分子数据、结果文件)4.2 关键AWS服务配置示例1. 将RDKit工具部署为Lambda Layer或容器由于RDKit有复杂的C依赖将其打包为Docker容器部署到Lambda或SageMaker是更佳选择。# Dockerfile for RDKit Lambda Container FROM public.ecr.aws/lambda/python:3.9 # 安装系统依赖和RDKit RUN yum -y install gcc-c cmake make yum clean all RUN pip install --no-cache-dir rdkit-pypi numpy pandas # 复制工具代码 COPY tools.py ${LAMBDA_TASK_ROOT} COPY lambda_handler.py ${LAMBDA_TASK_ROOT} # Lambda入口 CMD [ lambda_handler.handler ]# lambda_handler.py import json from tools import DrugDiscoveryTools tools DrugDiscoveryTools() def handler(event, context): tool_name event.get(tool_name) inputs event.get(inputs, {}) if tool_name predict_properties: result tools.predict_properties(**inputs) elif tool_name filter_molecules: result tools.filter_molecules(**inputs) # ... 其他工具 else: result {error: fUnknown tool: {tool_name}} return { statusCode: 200, body: json.dumps(result, defaultstr) # 处理可能不可序列化的对象 }2. 使用Step Functions编排工作流AWS Step Functions可以直观地定义和执行由多个Lambda函数、SageMaker作业等组成的工作流。{ Comment: 药物发现智能体工作流, StartAt: PlanTasks, States: { PlanTasks: { Type: Task, Resource: arn:aws:lambda:us-east-1:123456789012:function:PlannerLambda, Next: QueryKnownLigands }, QueryKnownLigands: { Type: Task, Resource: arn:aws:lambda:us-east-1:123456789012:function:QueryDBLambda, InputPath: $.target, ResultPath: $.knownLigands, Next: GenerateAnalogues }, GenerateAnalogues: { Type: Task, Resource: arn:aws:lambda:us-east-1:123456789012:function:GenerateAnaloguesLambda, InputPath: $.knownLigands[0], ResultPath: $.analogues, Next: PredictProperties }, PredictProperties: { Type: Map, ItemsPath: $.analogues, Iterator: { StartAt: PredictSingle, States: { PredictSingle: { Type: Task, Resource: arn:aws:lambda:us-east-1:123456789012:function:PredictPropertiesLambda, End: true } } }, ResultPath: $.predictedProperties, Next: FilterMolecules }, FilterMolecules: { Type: Task, Resource: arn:aws:lambda:us-east-1:123456789012:function:FilterLambda, InputPath: $.predictedProperties, ResultPath: $.finalCandidates, End: true } } }3. 集成Amazon Bedrock进行高级规划与推理在Planner Lambda中集成Bedrock SDK让LLM进行更灵活、复杂的任务分解和决策。# 在Planner Lambda中 import boto3 import json bedrock_runtime boto3.client(bedrock-runtime, region_nameus-east-1) def call_bedrock_for_planning(goal): prompt f你是一个药物化学AI助手。请将以下目标分解为步骤{goal}。步骤涉及查询数据库、生成分子、预测性质、过滤。以JSON格式输出。 body json.dumps({ prompt: prompt, max_tokens_to_sample: 500, temperature: 0.5, top_p: 0.9, }) response bedrock_runtime.invoke_model( modelIdanthropic.claude-v2, bodybody, contentTypeapplication/json, acceptapplication/json ) response_body json.loads(response[body].read()) return response_body.get(completion)5. 工程化挑战与最佳实践将智能体应用于真实的药物发现远不止编写几个函数。诺和诺德与AWS的合作必须解决以下工程挑战这也是开发者构建类似系统时需要重点考虑的。5.1 数据安全与合规性挑战药物研发数据是核心资产涉及患者隐私和商业机密。AWS最佳实践使用AWS PrivateLink确保Bedrock等服务的流量不经过公网。所有数据静态加密Amazon S3 SSE-S3/SSE-KMS,EBS加密。利用AWS IAM实施最小权限原则精细控制每个Lambda函数、容器的访问权限。使用AWS CloudTrail和Amazon GuardDuty进行全面的日志记录和安全监控。实施建议在S3桶策略、KMS密钥策略和IAM角色策略上投入足够时间进行设计评审。5.2 计算资源管理与成本优化挑战分子动力学模拟、深度学习训练等任务计算密集成本高昂。AWS最佳实践使用AWS Batch或SageMaker Training Jobs管理HPC作业自动选择最优实例Spot实例。为Lambda函数设置合理的超时和内存配置。利用Step Functions的Map状态实现大规模并行处理同时控制并发量。设置AWS Budgets和Cost Explorer警报。实施建议对工作流进行分阶段设计将轻量级任务如规则过滤与重型任务如模拟分离采用不同的计算策略。5.3 实验可重复性与追踪挑战科学研究要求实验过程完全可追溯、可复现。AWS最佳实践为每个智能体运行会话生成唯一IDCorrelation ID贯穿所有日志和服务调用。将所有输入参数、中间结果、最终输出以及完整的执行日志包括LLM的prompt和response存储到Amazon S3或DynamoDB。使用Amazon SageMaker Experiments跟踪不同的模型参数和结果。实施建议设计统一的数据模型来记录一次完整的“虚拟实验”包括时间戳、配置快照、数据版本和结果。5.4 智能体可靠性与错误处理挑战LLM输出可能不稳定工具调用可能失败工作流可能中断。AWS最佳实践在Step Functions中实现重试Retry和捕获Catch逻辑对可预见的错误如API限流、临时计算失败进行自动恢复。为LLM调用设计结构化输出JSON模式并实施验证对非结构化输出进行后处理和质量检查。设置Amazon CloudWatch Alarms监控关键工作流的失败率、延迟。实施建议实现一个“看门狗”Lambda函数定期检查长时间运行任务的状态并对僵死任务进行清理或重启。6. 未来展望与开发者学习路径诺和诺德与AWS的合作只是一个开始。AI智能体在药物发现乃至更广泛的科学计算领域材料科学、能源催化的应用前景广阔。6.1 技术演进方向多模态智能体整合文本文献、图像细胞图像、蛋白结构、图数据分子图进行综合推理。强化学习集成让智能体不仅能按计划执行还能通过与环境模拟实验的互动进行自我优化形成更优的分子设计策略。仿真环境构建高保真的“虚拟实验室”环境智能体在其中进行数百万次的模拟实验快速积累经验。人机协同设计更自然的人机交互界面让科学家可以中途干预、修正智能体的方向形成混合增强智能Hybrid Augmented Intelligence。6.2 对于开发者的学习建议如果你希望进入AI for Science或开发生命科学领域的智能体应用可以遵循以下路径夯实基础云平台深入掌握至少一家主流云平台如AWS的核心计算、存储、AI服务。理解Serverless、容器化、工作流编排。AI/ML理解机器学习基础特别是图神经网络GNN、生成模型VAE, GAN, Diffusion在分子生成中的应用。领域知识学习基础的化学、生物学知识理解SMILES、分子描述符、靶点、ADMET等概念。掌握工具链化学信息学熟练使用RDKit、Open Babel等开源库。深度学习框架掌握PyTorch、PyTorch Geometric用于图数据、DeepChem。智能体框架学习LangChain、LlamaIndex、AutoGen等框架理解其设计模式。动手实践从公开数据集如ChEMBL、PubChem开始复现经典的QSAR或分子生成论文。尝试将本地脚本改造成云原生的微服务或无服务器应用。参与开源项目如MoleculeNet、Open Drug Discovery Toolkit。关注行业动态关注MIT CSAIL、Stanford AI4Science、DeepMind、Isomorphic Labs等机构的最新研究。参加相关会议如NeurIPSML相关、ACS化学相关。构建一个真正能用于药物发现的智能体系统是复杂的它需要云架构、AI算法和领域知识的深度融合。诺和诺德与AWS的合作范式为我们提供了一个清晰的蓝图以云平台为基石以智能体为中枢以专业工具为触手构建一个自主、高效、可扩展的数字研发引擎。作为开发者理解并掌握这套技术栈将是在AI驱动科学发现浪潮中占据先机的关键。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价