CINXE.COM
GitHub - kaixindelele/ChatPaper: Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-aaa714e5674d.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-0a3c53b9d1c2.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_quote_reply_fix","copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","copilot_buffered_streaming","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","fgpat_form_ui_updates","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","react_router_dispose_on_disconnect","codespaces_prebuild_region_target_update","turbo_app_id_restore","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-3d023568a09f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-75968cfb5298.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-62d275b7ddd9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a90ac05d2469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-8206a1f1fc89.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-a03ee12d659a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-2a55124d5c52.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-768abe60b1f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-3e000c5d31a9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-87a4ae-b8865f653f6b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-e429cff6ceb1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-04cb692355a6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-01e85cd1be94.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-94dc7a2157c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-70450e-4b93df70b903.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-3e9d848bab5f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/codespaces-c3bcacfe317c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-3eebbd-0763620ad7bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_delegated-events_di-e161aa-9d41fb1b6c9e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_remote--3c9c82-b71ef90fbdc7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-fc1c2cf0d1c0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-26cce2010167.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-1c0aedc134b1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-dee7fde768ad.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-a18127980111.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-2df2f32ec596.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-9a233856b02c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-58a0c58bfee4.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.e091da425c66e50f3507.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.e091da425c66e50f3507.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>GitHub - kaixindelele/ChatPaper: Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复</title> <meta name="route-pattern" content="/:user_id/:repository" data-turbo-transient> <meta name="route-controller" content="files" data-turbo-transient> <meta name="route-action" content="disambiguate" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="B4B0:296BF6:2AD26D:327051:67E62883" data-pjax-transient="true"/><meta name="html-safe-nonce" content="4dbc330edca449fc99375bceb694197bd9f043efafa7fa68b3d174d639965eb5" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNEIwOjI5NkJGNjoyQUQyNkQ6MzI3MDUxOjY3RTYyODgzIiwidmlzaXRvcl9pZCI6IjE1ODY5MTQyMzc3ODAyMDc3NDciLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="0a56eb918634ca45e3b824a2a9274388b18475eeaf95b567f850581fa17c066f" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:611305072" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="repo_source" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/<user-name>/<repo-name>" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 - kaixindelele/ChatPaper"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/kaixindelele/ChatPaper" /> <meta name="twitter:image" content="https://opengraph.githubassets.com/f5840346a117b55a5535e404d8def61dcf2f7d51906edb864e357caac449e82c/kaixindelele/ChatPaper" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="GitHub - kaixindelele/ChatPaper: Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复" /><meta name="twitter:description" content="Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 - kaixindelele/ChatPaper" /> <meta property="og:image" content="https://opengraph.githubassets.com/f5840346a117b55a5535e404d8def61dcf2f7d51906edb864e357caac449e82c/kaixindelele/ChatPaper" /><meta property="og:image:alt" content="Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 - kaixindelele/ChatPaper" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="GitHub - kaixindelele/ChatPaper: Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复" /><meta property="og:url" content="https://github.com/kaixindelele/ChatPaper" /><meta property="og:description" content="Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 - kaixindelele/ChatPaper" /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="0fc8fd04d80f0b19cf765f35d26833d61ddfb5fff63599326a07b6c5e65ff1ee" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="77190eb53eb47fc30bd2fcc17a7eefa2dfd8505869fee9299ba911be3a40a9eb" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="159e03504eed5183f9787c72780a7d8c1460af30746ab09d728b048c41719efa" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="90bdac8ba3ff1e50e69217abcb682428207cb037762f314dd69179e5f27db7a6" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta data-hydrostats="publish"> <meta name="go-import" content="github.com/kaixindelele/ChatPaper git https://github.com/kaixindelele/ChatPaper.git"> <meta name="octolytics-dimension-user_id" content="28528386" /><meta name="octolytics-dimension-user_login" content="kaixindelele" /><meta name="octolytics-dimension-repository_id" content="611305072" /><meta name="octolytics-dimension-repository_nwo" content="kaixindelele/ChatPaper" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="611305072" /><meta name="octolytics-dimension-repository_network_root_nwo" content="kaixindelele/ChatPaper" /> <link rel="canonical" href="https://github.com/kaixindelele/ChatPaper" data-turbo-transient> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <meta name="release" content="2c60135bba8bcbdf3e7f5a7cbad4284d9db793a3"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-2ea4e93613c0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-33dfb803e078.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.e091da425c66e50f3507.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-730dca81d0a2.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="7bef5a096ea0c8d8ad0d60741a3f5297870e35f7cc6ba587234bb2e5a9483aee" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"nonprofits","context":"solutions","tag":"link","label":"nonprofits_link_solutions_navbar"}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"events_amp_webinars","context":"resources","tag":"link","label":"events_amp_webinars_link_resources_navbar"}" href="https://resources.github.com"> Events & Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ebooks_amp_whitepapers","context":"resources","tag":"link","label":"ebooks_amp_whitepapers_link_resources_navbar"}" href="https://github.com/resources/whitepapers"> Ebooks & Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"executive_insights","context":"resources","tag":"link","label":"executive_insights_link_resources_navbar"}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"copilot_for_business","context":"enterprise","tag":"link","label":"copilot_for_business_link_enterprise_navbar"}" href="/features/copilot/copilot-business"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">Copilot for business</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:kaixindelele/ChatPaper" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="EoYxitN4CaAStIZenDM5L9Sv8jVzLvNjlAoEp7qS2eNL46fGcUzUzaHBwil1qMAXiuWxPyHPIdLE_FrC_Bzvtw" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="kaixindelele/ChatPaper" data-current-org="" data-current-owner="kaixindelele" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-79e0aa57-7499-469a-8348-dff772d3fee9" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-79e0aa57-7499-469a-8348-dff772d3fee9" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="Sv+HTDAtg1XnSSGExjSBMyaK6JvCj/LGhvaq1MBjTY43x92wCAoFo0Es8Fv7LVHh/z+keZH8OyeumguRB6/29Q==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="nDOBZZgkmKafFX+PFfnxvkA27OltZD9PnzeRMG0LyJqWwfL1eAFuSAkRtbxb123cDFdN3phid3MhUP27xyjk8g==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="ctPAvfJEY5WAaPNK88EPFGPMK6wCWdrDYiThGCG+otHoOKGVSaiGW+zY8RyuZ88djo1Je418DmYCHhqzdg8X5w==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="7bef5a096ea0c8d8ad0d60741a3f5297870e35f7cc6ba587234bb2e5a9483aee" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=kaixindelele%2FChatPaper" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="7bef5a096ea0c8d8ad0d60741a3f5297870e35f7cc6ba587234bb2e5a9483aee" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/<user-name>/<repo-name>;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-e49c70b2-9dca-4d9d-bb90-e1128846c297" aria-labelledby="tooltip-710e7cbe-b856-4342-883f-8a1883f47d1d" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-710e7cbe-b856-4342-883f-8a1883f47d1d" for="icon-button-e49c70b2-9dca-4d9d-bb90-e1128846c297" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/kaixindelele/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/kaixindelele"> kaixindelele </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/kaixindelele/ChatPaper">ChatPaper</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2Fkaixindelele%2FChatPaper" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="bf995bf8cb7376f731482dd9a3049dcdff7bdd86808c5b627f5860876deae9c5" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-d6b1c3ff-ae46-461d-9e58-e0d97ba5e914" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Fkaixindelele%2FChatPaper" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":611305072,"auth_type":"LOG_IN","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="a734b5ad86723b27e44f6fa6fa6ca4d55dbbf01f7fb60c7c15382d825dddf65b" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="1,952" data-view-component="true" class="Counter">2k</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fkaixindelele%2FChatPaper" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":611305072,"auth_type":"LOG_IN","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="98e1f7e9eb574577511f7f01a2e753543354c114c18e1ef16fe3e5e1313c3e29" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="18810 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="18,810" data-view-component="true" class="Counter js-social-count">18.8k</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5"> <p class="f4 mb-3 "> Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 </p> <div class="mb-2 d-flex flex-items-center Link--secondary"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link flex-shrink-0 mr-2"> <path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path> </svg> <span class="flex-auto min-width-0 css-truncate css-truncate-target width-fit"> <a title="https://chatwithpaper.org" role="link" target="_blank" class="text-bold" rel="noopener noreferrer" href="https://chatwithpaper.org">chatwithpaper.org</a> </span> </div> <h3 class="sr-only">License</h3> <div class="mb-2"> <a href="/kaixindelele/ChatPaper/blob/main/LICENSE.md" class="Link--muted" data-analytics-event="{"category":"Repository Overview","action":"click","label":"location:sidebar;file:license"}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"> <path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path> </svg> View license </a> </div> <div class="mb-3"> <a class="Link--secondary no-underline mr-3" href="/kaixindelele/ChatPaper/stargazers"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-1"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <span class="text-bold">18.8k</span> stars </a> <a class="Link--secondary no-underline mr-3" href="/kaixindelele/ChatPaper/forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-1"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <span class="text-bold">2k</span> forks </a> <a class="Link--secondary no-underline mr-3 d-inline-block" href="/kaixindelele/ChatPaper/branches"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch mr-1"> <path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path> </svg> <span>Branches</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/kaixindelele/ChatPaper/tags"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag mr-1"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span>Tags</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/kaixindelele/ChatPaper/activity"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-1"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span>Activity</span> </a> </div> <div class="d-flex flex-wrap gap-2"> <div class="flex-1"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fkaixindelele%2FChatPaper" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":611305072,"auth_type":"LOG_IN","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="98e1f7e9eb574577511f7f01a2e753543354c114c18e1ef16fe3e5e1313c3e29" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </div> <div class="flex-1"> <a href="/login?return_to=%2Fkaixindelele%2FChatPaper" rel="nofollow" id="files-overview-watch-button" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/kaixindelele/ChatPaper","user_id":null}}" data-hydro-click-hmac="bf995bf8cb7376f731482dd9a3049dcdff7bdd86808c5b627f5860876deae9c5" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-624a6be0-8478-4fc0-8b79-31402f28d361" for="files-overview-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </div> <span> </span> </div> </div> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/kaixindelele/ChatPaper" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /kaixindelele/ChatPaper" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Code","target":"UNDERLINE_NAV.TAB"}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab" href="/kaixindelele/ChatPaper/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /kaixindelele/ChatPaper/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Issues","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> <span data-content="Issues">Issues</span> <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="68" data-view-component="true" class="Counter">68</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/kaixindelele/ChatPaper/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /kaixindelele/ChatPaper/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Pull requests","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="15" data-view-component="true" class="Counter">15</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab" href="/kaixindelele/ChatPaper/discussions" data-tab-item="i3discussions-tab" data-selected-links="repo_discussions /kaixindelele/ChatPaper/discussions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g g" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Discussions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> <span data-content="Discussions">Discussions</span> <span id="discussions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/kaixindelele/ChatPaper/actions" data-tab-item="i4actions-tab" data-selected-links="repo_actions /kaixindelele/ChatPaper/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Actions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="projects-tab" href="/kaixindelele/ChatPaper/projects" data-tab-item="i5projects-tab" data-selected-links="repo_projects new_repo_project repo_project /kaixindelele/ChatPaper/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Projects","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> <span data-content="Projects">Projects</span> <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/kaixindelele/ChatPaper/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /kaixindelele/ChatPaper/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Security","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/kaixindelele/ChatPaper/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/kaixindelele/ChatPaper/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /kaixindelele/ChatPaper/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Insights","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-button" popovertarget="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-overlay" aria-controls="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-list" aria-haspopup="true" aria-labelledby="tooltip-7bbcb5a1-b2bf-4247-87bc-31d2282093b3" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-7bbcb5a1-b2bf-4247-87bc-31d2282093b3" for="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position data-target="action-menu.overlay" id="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-overlay" anchor="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-button" id="action-menu-817df76c-1989-461e-b416-6e39ff94a65f-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-65b755c1-8cba-4283-b40b-c8b4558610bf" href="/kaixindelele/ChatPaper" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-e809c7e5-32bb-47e4-a5ba-decfacb2803e" href="/kaixindelele/ChatPaper/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Issues </span> </a> </li> <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-af2d1f7d-1e57-4448-b5e3-ac6c1e01cb0c" href="/kaixindelele/ChatPaper/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i3discussions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-af142968-47dd-4205-8295-54a471fe6745" href="/kaixindelele/ChatPaper/discussions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Discussions </span> </a> </li> <li hidden="hidden" data-menu-item="i4actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-4ea533e7-f53c-4a22-bcc6-72cd064a1189" href="/kaixindelele/ChatPaper/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i5projects-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-5d73c767-318d-4ece-80c4-9a4451dad441" href="/kaixindelele/ChatPaper/projects" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Projects </span> </a> </li> <li hidden="hidden" data-menu-item="i6security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-d2e0122f-fe8f-4d7d-8a26-8cc44e88ed8e" href="/kaixindelele/ChatPaper/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i7insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-b9656364-c786-474b-a28e-35944b688a5e" href="/kaixindelele/ChatPaper/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <h1 class='sr-only'>kaixindelele/ChatPaper</h1> <div class="clearfix container-xl px-md-4 px-lg-5 px-3"> <div> <div style="max-width: 100%" data-view-component="true" class="Layout Layout--flowRow-until-md react-repos-overview-margin Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end"> <div data-view-component="true" class="Layout-main"> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-dd1d3ea6a436.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryObserver_js-node_modules_tanstack_-defd52-843b41414e0e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_promise-with-resolvers-polyfill_promise-with-r-17c672-34345cb18aac.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-829ab4e0c92b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7496afc3784d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-7094d4-15017f02e61c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_hydro-analytics_hydro-analytics_ts-ui_packages_verified-fetch_verified-fetch_ts-u-4672d1-96a19eaeffb7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-d63960-3cb8cae9e2d0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repos-overview-520cf5801570.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.e091da425c66e50f3507.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repos-overview.0ee7cac3ab511a65d9f9.module.css" /> <react-partial partial-name="repos-overview" data-ssr="true" data-attempted-ssr="true" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":611305072,"defaultBranch":"main","name":"ChatPaper","ownerLogin":"kaixindelele","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-03-08T14:53:43.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/28528386?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"main","listCacheKey":"v0:1689901987.0","canEdit":false,"refType":"branch","currentOid":"045205730c164ae6192b99538f1ca666de75d19a"},"tree":{"items":[{"name":"ChatPaper2Xmind","path":"ChatPaper2Xmind","contentType":"submodule","submoduleUrl":"/MasterYip/ChatPaper2Xmind/tree/1dbe3b9ea01adbad9dfdf548fea9928813932777","submoduleDisplayName":"ChatPaper2Xmind @ 1dbe3b9"},{"name":"ChatReviewerAndResponse","path":"ChatReviewerAndResponse","contentType":"directory"},{"name":"HuggingFaceDeploy","path":"HuggingFaceDeploy","contentType":"directory"},{"name":"auto_survey","path":"auto_survey","contentType":"directory"},{"name":"docker","path":"docker","contentType":"directory"},{"name":"images","path":"images","contentType":"directory"},{"name":"others","path":"others","contentType":"directory"},{"name":"scipdf_parser-master","path":"scipdf_parser-master","contentType":"directory"},{"name":"source","path":"source","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitmodules","path":".gitmodules","contentType":"file"},{"name":".readthedocs.yaml","path":".readthedocs.yaml","contentType":"file"},{"name":"Dockerfile","path":"Dockerfile","contentType":"file"},{"name":"LICENSE.md","path":"LICENSE.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"apikey.ini","path":"apikey.ini","contentType":"file"},{"name":"chat_arxiv.py","path":"chat_arxiv.py","contentType":"file"},{"name":"chat_paper.py","path":"chat_paper.py","contentType":"file"},{"name":"chat_translate.py","path":"chat_translate.py","contentType":"file"},{"name":"demo.pdf","path":"demo.pdf","contentType":"file"},{"name":"readme_en.md","path":"readme_en.md","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"start.sh","path":"start.sh","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":23,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/kaixindelele/ChatPaper/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/kaixindelele/ChatPaper.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone kaixindelele/ChatPaper","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper","zipballUrl":"/kaixindelele/ChatPaper/archive/refs/heads/main.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=611305072"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"346","overviewFiles":[{"displayName":"README.md","repoName":"ChatPaper","refName":"main","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv dir=\"auto\"\u003e\n \u003ca href=\"/kaixindelele/ChatPaper/blob/main/README.md\"\u003e中文\u003c/a\u003e |\n \u003ca href=\"/kaixindelele/ChatPaper/blob/main/readme_en.md\"\u003eEnglish\u003c/a\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cp dir=\"auto\"\u003e💥💥💥\u003cstrong\u003e7.23 \u003ca href=\"https://github.com/MasterYip\"\u003eMasterYip\u003c/a\u003e 同学开源了 \u003ca href=\"https://github.com/MasterYip/ChatPaper2Xmind\"\u003eChatPaper2Xmind\u003c/a\u003e!\n将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记。\n\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e💥💥💥\u003cstrong\u003e7.22 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。\n增加全新的本地PDF全文翻译功能!\u003ca href=\"https://github.com/kaixindelele/ChatPaper#%E4%BB%BB%E6%84%8Fpdf%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B\"\u003e⛏️PDF全文翻译配置教程\u003c/a\u003e\n\u003c/strong\u003e\u003c/p\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e历史重大更新\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.23\u003c/em\u003e: \u003ca href=\"https://github.com/MasterYip\"\u003eMasterYip\u003c/a\u003e 同学开源了 \u003ca href=\"https://github.com/MasterYip/ChatPaper2Xmind\"\u003eChatPaper2Xmind\u003c/a\u003e!\n将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.22\u003c/em\u003e: 增加全新的本地PDF全文翻译功能!\u003ca href=\"#%E4%BB%BB%E6%84%8FPDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B\"\u003e⛏️PDF全文翻译配置教程\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.21\u003c/em\u003e: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.09\u003c/em\u003e: 师弟\u003ca href=\"https://github.com/red-tie\"\u003ered-tie\u003c/a\u003e在\u003ca href=\"https://github.com/CCCBora/auto-draft\"\u003eauto-draft\u003c/a\u003e的基础上,优化了一款\u003ca href=\"https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey\"\u003e一键文献综述\u003c/a\u003e的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.05\u003c/em\u003e: 昨天我做了一个新的小玩具:\u003ca href=\"https://github.com/kaixindelele/ChatSensitiveWords\"\u003eChatSensitiveWords\u003c/a\u003e,利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.30\u003c/em\u003e: \u003cstrong\u003e唯一官方网站:\u003c/strong\u003e\u003ca href=\"https://chatpaper.org/\" rel=\"nofollow\"\u003ehttps://chatpaper.org/\u003c/a\u003e ,以及小白教程【ChatPaper网页版使用小白教程-哔哩哔哩】 \u003ca href=\"https://b23.tv/HpDkcBU%EF%BC%8C\" rel=\"nofollow\"\u003ehttps://b23.tv/HpDkcBU,\u003c/a\u003e 第三方文档:\u003ca href=\"https://chatpaper.readthedocs.io\" rel=\"nofollow\"\u003ehttps://chatpaper.readthedocs.io\u003c/a\u003e .\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.22\u003c/em\u003e: 为了庆祝ChatPaper获得一万⭐,我们将联合两位同学,推出两个AI辅助文献总结工具,第一个是\u003ca href=\"https://github.com/CCCBora/auto-draft\"\u003eauto-draft\u003c/a\u003e,AI自动搜集整理出文献总结!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.17\u003c/em\u003e: 为了降低学术伦理风险,我们为Chat_Reviewer增加了复杂的文字注入,效果如图:\u003ca href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/reviews.jpg\"\u003e示例图\u003c/a\u003e ,希望各位老师同学在使用的时候,一定要注意学术伦理和学术声誉,不要滥用工具。如果谁有更好的方法来限制少数人的不规范使用,欢迎留言,为科研界做一份贡献。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.31\u003c/em\u003e: 目前已经离线总结了3w+的CCF-A会议论文了,以后大家可以不用等那么久了!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.28\u003c/em\u003e: 荣胜同学今天发布了一个非常有意思的工作\u003ca href=\"https://github.com/WangRongsheng/ChatGenTitle\"\u003eChatGenTitle\u003c/a\u003e,提供摘要生成标题,基于220wArXiv论文的数据微调的结果!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.23\u003c/em\u003e: chat_arxiv.py可以从arxiv网站,根据关键词,最近几天,几篇论文,直接爬取最新的领域论文了!解决了之前arxiv包的搜索不准确问题!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.23\u003c/em\u003e: ChatPaper终于成为完成体了!现在已经有论文总结+论文润色+论文分析与改进建议+论文审稿回复等功能了!\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 align=\"center\" tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eChatPaper\u003c/h1\u003e\u003ca id=\"user-content-chatpaper\" class=\"anchor\" aria-label=\"Permalink: ChatPaper\" href=\"#chatpaper\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv align=\"center\" dir=\"auto\"\u003e\n \u003ca href=\"https://github.com/kaixindelele/ChatPaper\"\u003e\n \u003cimg src=\"https://github.com/kaixindelele/ChatPaper/raw/main/images/homeLogo.jpg\" width=\"25%\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\n \u003cp align=\"center\" dir=\"auto\"\u003e\n \u003c/p\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e希望让语言不再成为中国人获取最新知识的障碍\u003c/h3\u003e\u003ca id=\"user-content-希望让语言不再成为中国人获取最新知识的障碍\" class=\"anchor\" aria-label=\"Permalink: 希望让语言不再成为中国人获取最新知识的障碍\" href=\"#希望让语言不再成为中国人获取最新知识的障碍\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n \u003ca href=\"https://github.com/kaixindelele/ChatPaper/graphs/contributors\"\u003e\n \u003cimg alt=\"GitHub Contributors\" src=\"https://camo.githubusercontent.com/dc83d6fc4888180a00d2ce7a1b90fcea90c6385b7bfe99259ddf85260a2152c0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6b616978696e64656c656c652f436861745061706572\" data-canonical-src=\"https://img.shields.io/github/contributors/kaixindelele/ChatPaper\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/kaixindelele/ChatPaper/issues\"\u003e\n \u003cimg alt=\"Issues\" src=\"https://camo.githubusercontent.com/395edfdd1973f80e4b4a13ae05f55e43a2a0aac40c25b55055eae9f48643335d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d303038386666\" data-canonical-src=\"https://img.shields.io/github/issues/kaixindelele/ChatPaper?color=0088ff\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/kaixindelele/ChatPaper/pulls\"\u003e\n \u003cimg alt=\"GitHub pull requests\" src=\"https://camo.githubusercontent.com/e0609e95e3977cec9d316a805ebee3c8ad07cb5309c9c92dfea46400ddb19060/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d303038386666\" data-canonical-src=\"https://img.shields.io/github/issues-pr/kaixindelele/ChatPaper?color=0088ff\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\u003ca href=\"https://github.com/kaixindelele/ChatPaper/stargazers\"\u003e\n \u003cimg alt=\"GitHub stars\" src=\"https://camo.githubusercontent.com/38e0c6fa9874fccae640e036fce337bf3fc460d9f229088d59303f7a5ab55440/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d636366\" data-canonical-src=\"https://img.shields.io/github/stars/kaixindelele/ChatPaper?color=ccf\" style=\"max-width: 100%;\"\u003e\n \u003c/a\u003e\n \u003cbr\u003e\n \u003cem\u003e一站式服务 / 简单 / 快速 / 高效 \u003c/em\u003e\n \u003cbr\u003e\n \u003ca href=\"https://www.bilibili.com/video/BV1EM411x7Tr/\" rel=\"nofollow\"\u003e\u003cstrong\u003e视频教程\u003c/strong\u003e\u003c/a\u003e\n ·\n \u003ca href=\"https://chatpaper.org/\" rel=\"nofollow\"\u003e\u003cstrong\u003e在线体验\u003c/strong\u003e\u003c/a\u003e\n \u003cp dir=\"auto\"\u003e\u003c/p\u003e\n \u003cp dir=\"auto\"\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 align=\"center\" tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复\u003c/h1\u003e\u003ca id=\"user-content-chatpaper全流程加速科研论文总结专业级翻译润色审稿审稿回复\" class=\"anchor\" aria-label=\"Permalink: ChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复\" href=\"#chatpaper全流程加速科研论文总结专业级翻译润色审稿审稿回复\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003e工具名称\u003c/th\u003e\n\u003cth align=\"left\"\u003e工具作用\u003c/th\u003e\n\u003cth align=\"left\"\u003e是否在线?\u003c/th\u003e\n\u003cth align=\"left\"\u003e在线预览\u003c/th\u003e\n\u003cth align=\"left\"\u003e备注\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003eChatPaper\u003c/td\u003e\n\u003ctd align=\"left\"\u003e通过ChatGPT实现对\u003cstrong\u003e论文进行总结,帮助科研人进行论文初筛\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e访问\u003ca href=\"https://chatpaper.org/\" rel=\"nofollow\"\u003echatpaper.org\u003c/a\u003e 使用\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://private-user-images.githubusercontent.com/28528386/252517119-ceda14e8-7330-40d2-859e-0d39d99a2dfb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTcxMTktY2VkYTE0ZTgtNzMzMC00MGQyLTg1OWUtMGQzOWQ5OWEyZGZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZWUzYjFmN2E4ZTJmN2Y1MjM2YzRiZjE0MDM2M2JlOTM4ZjA1MDA1ZWM2MTBlNjgxOGRkMmZkZGViN2QyNGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LFVvjyEHwkJQGxeS3vseoAzS-_fI_BJ5IWTyu41w5yo\"\u003e\u003cimg src=\"https://private-user-images.githubusercontent.com/28528386/252517119-ceda14e8-7330-40d2-859e-0d39d99a2dfb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTcxMTktY2VkYTE0ZTgtNzMzMC00MGQyLTg1OWUtMGQzOWQ5OWEyZGZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZWUzYjFmN2E4ZTJmN2Y1MjM2YzRiZjE0MDM2M2JlOTM4ZjA1MDA1ZWM2MTBlNjgxOGRkMmZkZGViN2QyNGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LFVvjyEHwkJQGxeS3vseoAzS-_fI_BJ5IWTyu41w5yo\" alt=\"F LJTRX$DNFU`KR M7{E6Q\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://github.com/kaixindelele/ChatPaper\"\u003e原项目地址\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003eChatReviewer\u003c/td\u003e\n\u003ctd align=\"left\"\u003e利用ChatGPT对论文进行\u003cstrong\u003e优缺点分析,提出改进建议\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e访问\u003ca href=\"https://huggingface.co/spaces/ShiwenNi/ChatReviewer\" rel=\"nofollow\"\u003eShiwenNi/ChatReviewer\u003c/a\u003e 使用\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/chatrevierer.png\"\u003e\u003cimg alt=\"Animation Demo\" src=\"https://github.com/kaixindelele/ChatPaper/raw/main/images/chatrevierer.png\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://github.com/nishiwen1214/ChatReviewer\"\u003e原项目地址\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003eChatImprovement\u003c/td\u003e\n\u003ctd align=\"left\"\u003e利用ChatGPT对\u003cstrong\u003e论文初稿进行润色、翻译等\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e访问\u003ca href=\"http://academic.chatwithpaper.org/\" rel=\"nofollow\"\u003e学术版GPT\u003c/a\u003e 使用\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://private-user-images.githubusercontent.com/28528386/252517576-d6cf75e7-b2a3-43c2-8d48-4174c9ee3560.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTc1NzYtZDZjZjc1ZTctYjJhMy00M2MyLThkNDgtNDE3NGM5ZWUzNTYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhZjE0OTQxYjQ1NTkyOGJmN2UzN2JmYjA1NmVkNjlmMGI5ZjM4N2EzY2NjNDM4MjY3ZDhiMDU1YWEwMTEyMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.H71JY4qybcxiTjaXPFsCWfsPh2y7kvy5ZCdVMXORcOk\"\u003e\u003cimg src=\"https://private-user-images.githubusercontent.com/28528386/252517576-d6cf75e7-b2a3-43c2-8d48-4174c9ee3560.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTc1NzYtZDZjZjc1ZTctYjJhMy00M2MyLThkNDgtNDE3NGM5ZWUzNTYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhZjE0OTQxYjQ1NTkyOGJmN2UzN2JmYjA1NmVkNjlmMGI5ZjM4N2EzY2NjNDM4MjY3ZDhiMDU1YWEwMTEyMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.H71JY4qybcxiTjaXPFsCWfsPh2y7kvy5ZCdVMXORcOk\" alt=\"网页版\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://github.com/binary-husky/chatgpt_academic\"\u003e原项目地址\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003eChatResponse\u003c/td\u003e\n\u003ctd align=\"left\"\u003e利用ChatGPT对\u003cstrong\u003e审稿人的提问进行回复\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e访问\u003ca href=\"https://huggingface.co/spaces/ShiwenNi/ChatResponse\" rel=\"nofollow\"\u003eShiwenNi/ChatResponse\u003c/a\u003e 使用\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/chatresponse.jpg\"\u003e\u003cimg alt=\"Animation Demo\" src=\"https://github.com/kaixindelele/ChatPaper/raw/main/images/chatresponse.jpg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://github.com/nishiwen1214/ChatReviewer\"\u003e原项目地址\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003eChatGenTitle\u003c/td\u003e\n\u003ctd align=\"left\"\u003e利用百万arXiv论文元信息训练出来的论文题目生成模型,\u003cstrong\u003e根据论文摘要生成合适题目\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://drive.google.com/file/d/1akrC4-YnYdiyD1_VK-92hncN7HS0FLf5/view?usp=sharing\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/96889048f8a9014fdeba2a891f97150c6aac6e723f5190236b10215a97ed41f3/68747470733a2f2f636f6c61622e72657365617263682e676f6f676c652e636f6d2f6173736574732f636f6c61622d62616467652e737667\" alt=\"Open In Colab\" data-canonical-src=\"https://colab.research.google.com/assets/colab-badge.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/chatgentitle.png\"\u003e\u003cimg alt=\"Animation Demo\" src=\"https://github.com/kaixindelele/ChatPaper/raw/main/images/chatgentitle.png\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e\u003ca href=\"https://github.com/WangRongsheng/ChatGenTitle\"\u003e原项目地址\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003e所有功能免费,代码开源,大家放心使用!\u003c/strong\u003e 关于API如何获取,首先你得有一个没有被封的ChatGPT账号,然后\u003ca href=\"https://chatgpt.cn.obiscr.com/blog/posts/2023/How-to-get-api-key/\" rel=\"nofollow\"\u003e获取Api Key\u003c/a\u003e ,填入即可!\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e目录:\u003c/h2\u003e\u003ca id=\"user-content-目录\" class=\"anchor\" aria-label=\"Permalink: 目录:\" href=\"#目录\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#%E6%9C%80%E6%96%B0%E8%AE%AF%E6%81%AF\"\u003e💥最新讯息\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E5%BC%80%E5%8F%91%E5%8A%A8%E6%9C%BA\"\u003e💫开发动机\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B\"\u003e⛏️配置教程\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kaixindelele/ChatPaper#%E4%BB%BB%E6%84%8Fpdf%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B\"\u003e⛏️PDF全文翻译配置教程\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#HuggingFace%E5%9C%A8%E7%BA%BF%E9%83%A8%E7%BD%B2\"\u003e👷♂️HuggingFace在线部署\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E6%9C%AC%E5%9C%B0PDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E7%A4%BA%E4%BE%8B\"\u003e📄本地PDF全文翻译示例\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E6%9C%AC%E5%9C%B0PDF%E5%85%A8%E6%96%87%E6%80%BB%E7%BB%93%E7%A4%BA%E4%BE%8B\"\u003e📄本地PDF全文总结示例\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E5%85%A8%E6%96%87%E6%80%BB%E7%BB%93%E7%A4%BA%E4%BE%8B\"\u003e📄全文总结示例\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7\"\u003e👁️🗨️使用技巧\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E5%B8%B8%E8%A7%81%E6%8A%A5%E9%94%99\"\u003e🛠️常见报错\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E9%A1%B9%E7%9B%AE%E8%87%B4%E8%B0%A2\"\u003e💐项目致谢\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#%E8%B5%9E%E5%8A%A9%E6%88%91%E4%BB%AC\"\u003e🌟赞助我们\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Starchart\"\u003e🌈Starchart\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Contributors\"\u003e🏆Contributors\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e最新讯息\u003c/h2\u003e\u003ca id=\"user-content-最新讯息\" class=\"anchor\" aria-label=\"Permalink: 最新讯息\" href=\"#最新讯息\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.23\u003c/em\u003e: \u003ca href=\"https://github.com/MasterYip\"\u003eMasterYip\u003c/a\u003e 同学开源了 \u003ca href=\"https://github.com/MasterYip/ChatPaper2Xmind\"\u003eChatPaper2Xmind\u003c/a\u003e!\n将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.22\u003c/em\u003e: 增加全新的本地PDF全文翻译功能!\u003ca href=\"#%E4%BB%BB%E6%84%8FPDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B\"\u003e⛏️PDF全文翻译配置教程\u003c/a\u003e。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.21\u003c/em\u003e: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.09\u003c/em\u003e: 师弟\u003ca href=\"https://github.com/red-tie\"\u003ered-tie\u003c/a\u003e在\u003ca href=\"https://github.com/CCCBora/auto-draft\"\u003eauto-draft\u003c/a\u003e的基础上,优化了一款\u003ca href=\"https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey\"\u003e一键文献综述\u003c/a\u003e的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.07.05\u003c/em\u003e: 昨天我做了一个新的小玩具:\u003ca href=\"https://github.com/kaixindelele/ChatSensitiveWords\"\u003eChatSensitiveWords\u003c/a\u003e,利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.30\u003c/em\u003e: \u003cstrong\u003e唯一官方网站:\u003c/strong\u003e\u003ca href=\"https://chatpaper.org/\" rel=\"nofollow\"\u003ehttps://chatpaper.org/\u003c/a\u003e ,以及小白教程【ChatPaper网页版使用小白教程-哔哩哔哩】 \u003ca href=\"https://b23.tv/HpDkcBU%EF%BC%8C\" rel=\"nofollow\"\u003ehttps://b23.tv/HpDkcBU,\u003c/a\u003e 第三方文档:\u003ca href=\"https://chatpaper.readthedocs.io\" rel=\"nofollow\"\u003ehttps://chatpaper.readthedocs.io\u003c/a\u003e .\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.22\u003c/em\u003e: 为了庆祝ChatPaper获得一万⭐,我们将联合两位同学,推出两个AI辅助文献总结工具,第一个是\u003ca href=\"https://github.com/CCCBora/auto-draft\"\u003eauto-draft\u003c/a\u003e,AI自动搜集整理出文献总结!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.04.17\u003c/em\u003e: 为了降低学术伦理风险,我们为Chat_Reviewer增加了复杂的文字注入,效果如图:\u003ca href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/reviews.jpg\"\u003e示例图\u003c/a\u003e ,希望各位老师同学在使用的时候,一定要注意学术伦理和学术声誉,不要滥用工具。如果谁有更好的方法来限制少数人的不规范使用,欢迎留言,为科研界做一份贡献。\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.31\u003c/em\u003e: 目前已经离线总结了3w+的CCF-A会议论文了,以后大家可以不用等那么久了!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.28\u003c/em\u003e: 荣胜同学今天发布了一个非常有意思的工作\u003ca href=\"https://github.com/WangRongsheng/ChatGenTitle\"\u003eChatGenTitle\u003c/a\u003e,提供摘要生成标题,基于220wArXiv论文的数据微调的结果!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.23\u003c/em\u003e: chat_arxiv.py可以从arxiv网站,根据关键词,最近几天,几篇论文,直接爬取最新的领域论文了!解决了之前arxiv包的搜索不准确问题!\u003c/li\u003e\n\u003cli\u003e🌟\u003cem\u003e2023.03.23\u003c/em\u003e: ChatPaper终于成为完成体了!现在已经有论文总结+论文润色+论文分析与改进建议+论文审稿回复等功能了!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e开发动机\u003c/h2\u003e\u003ca id=\"user-content-开发动机\" class=\"anchor\" aria-label=\"Permalink: 开发动机\" href=\"#开发动机\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e开发动机细节\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e面对每天海量的arxiv论文,以及AI极速的进化,我们人类必须也要一起进化才能不被淘汰。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e作为中科大强化学习方向的博士生,我深感焦虑,现在AI的进化速度,我开脑洞都赶不上。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e因此我开发了这款ChatPaper,尝试用魔法打败魔法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eChatPaper是一款论文总结工具。AI用一分钟总结论文,用户用一分钟阅读AI总结的论文。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e它可以根据用户输入的关键词,自动在arxiv上下载最新的论文,再利用ChatGPT3.5的API接口强大的总结能力,将论文总结为固定的格式,以最少的文本,最低的阅读门槛,为大家提供最大信息量,以决定该精读哪些文章。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e也可以提供本地的PDF文档地址,直接处理。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e一般一个晚上就可以速通一个小领域的最新文章。我自己测试了两天了。\u003c/p\u003e\n\u003c/details\u003e\n\u003cp dir=\"auto\"\u003e祝大家在这个极速变化的时代中,能够和AI一起进化!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e欢迎大家的赞助,以帮助支付网页运营的API和服务器成本,并让我们有动力继续开发更多更高质量的服务!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e您的支持,是我持续更新的动力和赞赏!\u003c/p\u003e\n\u003cdiv dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224892765-d22a36ad-7bd6-41ed-9e89-f7fe5e88944b.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224892765-d22a36ad-7bd6-41ed-9e89-f7fe5e88944b.png\" width=\"200\" height=\"250\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e欢迎大家加入光荣的进化!\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e技术原理:\u003c/h2\u003e\u003ca id=\"user-content-技术原理\" class=\"anchor\" aria-label=\"Permalink: 技术原理:\" href=\"#技术原理\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e技术原理细节\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e论文总结遵循下面四个问题:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e研究背景\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e过去的方案是什么?他们有什么问题?\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e本文方案是什么?具体步骤是什么?\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e本文在哪些任务中,取得了什么效果?\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e基本上是大家做论文汇报的主要内容了。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e实现细节:\n提取摘要和introduction的内容,因为abstract很少会告诉你过去的方案是什么,存在什么问题。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e然后提取method章节,总结方法的具体步骤\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e最后提取conclusion章节,总结全文。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e分三次总结和喂入,如果每个部分超过了长度,则截断(目前这个方案太粗暴了,但也没有更好的更优雅的方案)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e作为初筛,勉强够用。\u003c/p\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e配置教程\u003c/h2\u003e\u003ca id=\"user-content-配置教程\" class=\"anchor\" aria-label=\"Permalink: 配置教程\" href=\"#配置教程\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e配置教程细节\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e一、以脚本方式运行\u003c/h3\u003e\u003ca id=\"user-content-一以脚本方式运行\" class=\"anchor\" aria-label=\"Permalink: 一、以脚本方式运行\" href=\"#一以脚本方式运行\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWindows, Mac和Linux系统应该都可以\u003c/p\u003e\n\u003cp dir=\"auto\"\u003epython版本最好是3.9,其他版本应该也没啥问题\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e在apikey.ini中填入你的openai key。注意,这个代码纯本地项目,你的key很安全!如果不被OpenAI封的话~\n小白用户比较多,我直接给截图示意下可能会更好:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224497146-f5518553-04a2-4efa-90e6-4ac0febb8177.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224497146-f5518553-04a2-4efa-90e6-4ac0febb8177.png\" width=\"500\" height=\"220\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003col start=\"2\" dir=\"auto\"\u003e\n\u003cli\u003e使用过程要保证全局代理!\n如果客户端时clash的话,可以参考这个进行配置:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224529317-f49265d7-fb5f-4dd5-b462-930aaa0c682d.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224529317-f49265d7-fb5f-4dd5-b462-930aaa0c682d.png\" width=\"500\" height=\"350\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003col start=\"3\" dir=\"auto\"\u003e\n\u003cli\u003e安装依赖:最好翻墙,或者用国内源。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pip install -r requirements.txt\"\u003e\u003cpre\u003epip install -r requirements.txt\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e4.1. Arxiv在线批量搜索+下载+总结: 运行chat_paper.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_paper.py --query \u0026quot;chatgpt robot\u0026quot; --filter_keys \u0026quot;chatgpt robot\u0026quot; --max_results 3\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_paper\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003equery\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"chatgpt robot\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003efilter_keys\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"chatgpt robot\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003emax_results\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e更准确的脚本是chat_arxiv.py,使用方案,命令行更加简洁:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_arxiv.py --query \u0026quot;chatgpt robot\u0026quot; --page_num 2 --max_results 3 --days 10\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_arxiv\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003equery\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"chatgpt robot\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003epage_num\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003emax_results\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003edays\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e其中query仍然是关键词,page_num是搜索的页面,每页和官网一样,最大是50篇,max_results是最终总结前N篇的文章,days是选最近几天的论文,严格筛选!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003e注意:搜索词无法识别\u003ccode\u003e-\u003c/code\u003e,只能识别空格!所以原标题的连字符最好不要用!\u003c/strong\u003e 感谢网友提供的信息\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e4.2. Arxiv在线批量搜索+下载+总结+高级搜索: 运行chat_paper.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_paper.py --query \u0026quot;all: reinforcement learning robot 2023\u0026quot; --filter_keys \u0026quot;reinforcement robot\u0026quot; --max_results 3\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_paper\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003equery\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"all: reinforcement learning robot 2023\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003efilter_keys\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"reinforcement robot\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003emax_results\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e💥💥💥\u003cstrong\u003e7K星了,发布一个猫娘版提示词,希望大家一起让猫娘活起来~:\u003ca href=\"https://github.com/kaixindelele/ChatPaper/blob/main/chat_arxiv_maomao.py\"\u003e脚本:chat_arxiv_maomao.py\u003c/a\u003e, \u003ca href=\"https://github.com/kaixindelele/ChatPaper/blob/main/images/maomao.png\"\u003e总结图片\u003c/a\u003e \u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e4.3. Arxiv在线批量搜索+下载+总结+高级搜索+指定作者: 运行chat_paper.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_paper.py --query \u0026quot;au: Sergey Levine\u0026quot; --filter_keys \u0026quot;reinforcement robot\u0026quot; --max_results 3\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_paper\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003equery\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"au: Sergey Levine\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003efilter_keys\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"reinforcement robot\"\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003emax_results\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e4.4. 本地pdf总结: 运行chat_paper.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_paper.py --pdf_path \u0026quot;demo.pdf\u0026quot;\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_paper\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003epdf_path\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"demo.pdf\"\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e4.5. 本地文件夹批量总结: 运行chat_paper.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python chat_paper.py --pdf_path \u0026quot;your_absolute_path\u0026quot;\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epython\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003echat_paper\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003epy\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u003c/span\u003e\u003cspan class=\"pl-s1\"\u003epdf_path\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"your_absolute_path\"\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e4.6. 谷歌学术论文整理: 运行google_scholar_spider.py, 比如:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"python google_scholar_spider.py --kw \u0026quot;deep learning\u0026quot; --nresults 30 --csvpath \u0026quot;./data\u0026quot; --sortby \u0026quot;cit/year\u0026quot; --plotresults 1\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epython google_scholar_spider.py --kw \"deep learning\" --nresults 30 --csvpath \"./data\" --sortby \"cit/year\" --plotresults 1\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e此命令在Google Scholar上搜索与“deep learning”相关的文章,检索30个结果,将结果保存到“./data”文件夹中的CSV文件中,按每年引用次数排序数据,并绘制结果。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e具体使用和参数请参考\u003ca href=\"https://github.com/JessyTsu1/google_scholar_spider\"\u003ehttps://github.com/JessyTsu1/google_scholar_spider\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e4.7. Gitee图床的配置教程(选配,比较麻烦)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e效果和配置视频:\u003ca href=\"https://www.bilibili.com/video/BV1Rh4y1173t/\" rel=\"nofollow\"\u003ehttps://www.bilibili.com/video/BV1Rh4y1173t/\u003c/a\u003e\n教程文章:\u003ca href=\"https://zhuanlan.zhihu.com/p/644326031\" rel=\"nofollow\"\u003ehttps://zhuanlan.zhihu.com/p/644326031\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp dir=\"auto\"\u003e另外注意,目前这个不支持\u003cstrong\u003e综述类\u003c/strong\u003e文章。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eB站讲解视频:\u003ca href=\"https://www.bilibili.com/video/BV1EM411x7Tr/\" rel=\"nofollow\"\u003e我把ChatPaper开源了!AI速读PDF论文和速通Arxiv论文\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003e注意:key_word不重要,但是filter_keys非常重要!\u003c/strong\u003e\n一定要修改成你的关键词。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e另外关于arxiv的搜索关键词可以参考下图:\u003c/p\u003e\n\u003cdiv dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224550698-f0e18bf7-f09f-40a1-a747-1d596b3edd01.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224550698-f0e18bf7-f09f-40a1-a747-1d596b3edd01.png\" width=\"250\" height=\"350\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003col start=\"5\" dir=\"auto\"\u003e\n\u003cli\u003e参数介绍:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"[--pdf_path 是否直接读取本地的pdf文档?如果不设置的话,直接从arxiv上搜索并且下载] \n[--query 向arxiv网站搜索的关键词,有一些缩写示范:all, ti(title), au(author),一个query示例:all: ChatGPT robot] \n[--key_word 你感兴趣领域的关键词,重要性不高] \n[--filter_keys 你需要在摘要文本中搜索的关键词,必须保证每个词都出现,才算是你的目标论文] \n[--max_results 每次搜索的最大文章数,经过上面的筛选,才是你的目标论文数,chat只总结筛选后的论文] \n[--sort arxiv的排序方式,默认是相关性,也可以是时间,arxiv.SortCriterion.LastUpdatedDate 或者 arxiv.SortCriterion.Relevance, 别加引号] \n[--save_image 是否存图片,如果你没注册gitee的图床的话,默认为false] \n[--file_format 文件保存格式,默认是markdown的md格式,也可以是txt] \n\nparser.add_argument(\u0026quot;--pdf_path\u0026quot;, type=str, default='', help=\u0026quot;if none, the bot will download from arxiv with query\u0026quot;)\nparser.add_argument(\u0026quot;--query\u0026quot;, type=str, default='all: ChatGPT robot', help=\u0026quot;the query string, ti: xx, au: xx, all: xx,\u0026quot;) \nparser.add_argument(\u0026quot;--key_word\u0026quot;, type=str, default='reinforcement learning', help=\u0026quot;the key word of user research fields\u0026quot;)\nparser.add_argument(\u0026quot;--filter_keys\u0026quot;, type=str, default='ChatGPT robot', help=\u0026quot;the filter key words, 摘要中每个单词都得有,才会被筛选为目标论文\u0026quot;)\nparser.add_argument(\u0026quot;--max_results\u0026quot;, type=int, default=1, help=\u0026quot;the maximum number of results\u0026quot;)\nparser.add_argument(\u0026quot;--sort\u0026quot;, default=arxiv.SortCriterion.Relevance, help=\u0026quot;another is arxiv.SortCriterion.LastUpdatedDate\u0026quot;) \nparser.add_argument(\u0026quot;--save_image\u0026quot;, default=False, help=\u0026quot;save image? It takes a minute or two to save a picture! But pretty\u0026quot;)\nparser.add_argument(\u0026quot;--file_format\u0026quot;, type=str, default='md', help=\u0026quot;导出的文件格式,如果存图片的话,最好是md,如果不是的话,txt的不会乱\u0026quot;)\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e[--pdf_path 是否直接读取本地的pdf文档?如果不设置的话,直接从arxiv上搜索并且下载] \n[--query 向arxiv网站搜索的关键词,有一些缩写示范:all, ti(title), au(author),一个query示例:all: ChatGPT robot] \n[--key_word 你感兴趣领域的关键词,重要性不高] \n[--filter_keys 你需要在摘要文本中搜索的关键词,必须保证每个词都出现,才算是你的目标论文] \n[--max_results 每次搜索的最大文章数,经过上面的筛选,才是你的目标论文数,chat只总结筛选后的论文] \n[--sort arxiv的排序方式,默认是相关性,也可以是时间,arxiv.SortCriterion.LastUpdatedDate 或者 arxiv.SortCriterion.Relevance, 别加引号] \n[--save_image 是否存图片,如果你没注册gitee的图床的话,默认为false] \n[--file_format 文件保存格式,默认是markdown的md格式,也可以是txt] \n\nparser.add_argument(\"--pdf_path\", type=str, default='', help=\"if none, the bot will download from arxiv with query\")\nparser.add_argument(\"--query\", type=str, default='all: ChatGPT robot', help=\"the query string, ti: xx, au: xx, all: xx,\") \nparser.add_argument(\"--key_word\", type=str, default='reinforcement learning', help=\"the key word of user research fields\")\nparser.add_argument(\"--filter_keys\", type=str, default='ChatGPT robot', help=\"the filter key words, 摘要中每个单词都得有,才会被筛选为目标论文\")\nparser.add_argument(\"--max_results\", type=int, default=1, help=\"the maximum number of results\")\nparser.add_argument(\"--sort\", default=arxiv.SortCriterion.Relevance, help=\"another is arxiv.SortCriterion.LastUpdatedDate\") \nparser.add_argument(\"--save_image\", default=False, help=\"save image? It takes a minute or two to save a picture! But pretty\")\nparser.add_argument(\"--file_format\", type=str, default='md', help=\"导出的文件格式,如果存图片的话,最好是md,如果不是的话,txt的不会乱\")\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e二、 以Flask服务运行\u003c/h3\u003e\u003ca id=\"user-content-二-以flask服务运行\" class=\"anchor\" aria-label=\"Permalink: 二、 以Flask服务运行\" href=\"#二-以flask服务运行\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003eFlask配置教程\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e注意:更新版本后,可能有路径的报错\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e下载项目并进入项目目录\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"git clone https://github.com/kaixindelele/ChatPaper.git\ncd ChatPaper\"\u003e\u003cpre lang=\"text\" class=\"notranslate\"\u003e\u003ccode\u003egit clone https://github.com/kaixindelele/ChatPaper.git\ncd ChatPaper\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003col start=\"2\" dir=\"auto\"\u003e\n\u003cli\u003e在项目根目录下的 \u003ccode\u003eapikey.ini\u003c/code\u003e 文件中填入您的 OpenAI 密钥。\u003c/li\u003e\n\u003cli\u003e配置虚拟环境并下载依赖\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pip install virtualenv \n安装虚拟环境工具\nvirtualenv venv \n新建一个名为venv的虚拟环境\nLinux/Mac下:\nsource venv/bin/activate\n\nWindows下:\n.\\venv\\Scripts\\activate.bat\n\npip install -r requirements.txt\"\u003e\u003cpre lang=\"text\" class=\"notranslate\"\u003e\u003ccode\u003epip install virtualenv \n安装虚拟环境工具\nvirtualenv venv \n新建一个名为venv的虚拟环境\nLinux/Mac下:\nsource venv/bin/activate\n\nWindows下:\n.\\venv\\Scripts\\activate.bat\n\npip install -r requirements.txt\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003col start=\"4\" dir=\"auto\"\u003e\n\u003cli\u003e启动服务\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"python3 app.py\n# 启动 Flask 服务。运行此命令后,Flask 服务将在本地的 5000 端口上启动并等待用户请求。在浏览器中访问以下地址之一以访问 Flask 服务的主页:\n# http://127.0.0.1:5000/\n# 或\n# http://127.0.0.1:5000/index\"\u003e\u003cpre lang=\"text\" class=\"notranslate\"\u003e\u003ccode\u003epython3 app.py\n# 启动 Flask 服务。运行此命令后,Flask 服务将在本地的 5000 端口上启动并等待用户请求。在浏览器中访问以下地址之一以访问 Flask 服务的主页:\n# http://127.0.0.1:5000/\n# 或\n# http://127.0.0.1:5000/index\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e访问 \u003ca href=\"http://127.0.0.1:5000/\" rel=\"nofollow\"\u003ehttp://127.0.0.1:5000/\u003c/a\u003e 后,您将看到主页。在主页上,您可以点击不同的链接来调用各种服务。您可以通过修改链接中的参数值来实现不同的效果。有关参数详细信息,请参阅上一步骤中的详细介绍\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/kaixindelele/ChatPaper/blob/main/images/flask_web_home.png\"\u003e\u003cimg src=\"/kaixindelele/ChatPaper/raw/main/images/flask_web_home.png\" alt=\"flask主界面\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e特别的,这四个接口实际是封装了根目录下四个脚本的 web 界面。参数可以通过链接来修改。例如要运行“arxiv?query=GPT-4\u0026amp;key_word=GPT+robot\u0026amp;page_num=1\u0026amp;max_results=1\u0026amp;days=1\u0026amp;sort=web\u0026amp;save_image=False\u0026amp;file_format=md\u0026amp;language=zh”的话,相当于在根目录下调用 chat_arxiv.py 并返回结果。这个显示的结果和在命令行中调用的结果是一样的(即:python chat_arxiv.py --query \"GPT-4\" --key_word \"GPT robot\" --page_num 1 --max_results 1 --days 1 --sort \"web\" --save_image False --file_format \"md\" --language \"zh\")。您可以通过修改参数来获得其他搜索结果。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e如果以这种方式部署的话,结果会保存在同级目录下新生成的export、pdf_files 和response_file三个文件夹里\u003c/p\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e三、以docker形式运行\u003c/h3\u003e\u003ca id=\"user-content-三以docker形式运行\" class=\"anchor\" aria-label=\"Permalink: 三、以docker形式运行\" href=\"#三以docker形式运行\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003eDocker配置教程细节\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e注意:Docker的路径也被我打乱了,很可能存在问题,不推荐尝试。\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e安装docker和docker-compose,可以参考以下链接\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://yeasy.gitbook.io/docker_practice/install\" rel=\"nofollow\"\u003ehttps://yeasy.gitbook.io/docker_practice/install\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://yeasy.gitbook.io/docker_practice/compose/install\" rel=\"nofollow\"\u003ehttps://yeasy.gitbook.io/docker_practice/compose/install\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e找地方放项目根目录下的“docker-compose.yaml”文件,将21行的\u003ccode\u003eYOUR_KEY_HERE\u003c/code\u003e替换为自己的openai_key\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e在同级目录下在命令行运行\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"docker-compose up -d\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003edocker-compose up -d\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e这样的界面代表一些正常,随后访问\u003ca href=\"https://127.0.0.1:28460/\" rel=\"nofollow\"\u003ehttps://127.0.0.1:28460/\u003c/a\u003e 就可以从网页上打开了! \u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/kaixindelele/ChatPaper/blob/main/images/docker-compose.png\"\u003e\u003cimg src=\"/kaixindelele/ChatPaper/raw/main/images/docker-compose.png\" alt=\"docker-compose\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e特别的,如果有改进项目的想法,您可以查看 build.sh、dev.sh、tagpush.sh这三个脚本以及根目录docker目录下文件的作用,相信它们会对你容器化封装项目的思想有进一步提升\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e所有的运行结果都被保存在 Docker 的 volumes 中,如果想以服务的形式长期部署,您可以将这些目录映射出来。默认情况下,它们位于 /var/lib/docker/volumes/ 下。您可以进入该目录并查看 chatpaper_log、chatpaper_export、chatpaper_pdf_files 和 chatpaper_response_file 四个相关文件夹中的结果。有关 Docker volumes 的详细解释,请参考此链接:\u003ca href=\"http://docker.baoshu.red/data_management/volume.html%E3%80%82\" rel=\"nofollow\"\u003ehttp://docker.baoshu.red/data_management/volume.html。\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHuggingFace在线部署\u003c/h2\u003e\u003ca id=\"user-content-huggingface在线部署\" class=\"anchor\" aria-label=\"Permalink: HuggingFace在线部署\" href=\"#huggingface在线部署\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003eHuggingFace在线部署细节\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e注意:这部分也是一样,功能暂时被废掉了,建议大家直接使用chatwithpaper.org的网页版。\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e在\u003ca href=\"https://huggingface.co/\" rel=\"nofollow\"\u003eHugging Face\u003c/a\u003e 创建自己的个人账号并登录;\u003c/li\u003e\n\u003cli\u003e进入ChatPaper主仓库:\u003ca href=\"https://huggingface.co/spaces/wangrongsheng/ChatPaper\" rel=\"nofollow\"\u003ehttps://huggingface.co/spaces/wangrongsheng/ChatPaper\u003c/a\u003e ,您可以在\u003ca href=\"https://huggingface.co/spaces/wangrongsheng/ChatPaper/tree/main\" rel=\"nofollow\"\u003eFiles and Version\u003c/a\u003e 看到所有的最新部署代码;\u003c/li\u003e\n\u003cli\u003e[可选]私有化部署使用:点击\u003ca href=\"https://huggingface.co/spaces/wangrongsheng/ChatPaper?duplicate=true\" rel=\"nofollow\"\u003eDuplicate this space\u003c/a\u003e ,在弹出的页面中将\u003ccode\u003eVisibility\u003c/code\u003e选择为\u003ccode\u003ePrivate\u003c/code\u003e,最后点击\u003ccode\u003eDuplicate Space\u003c/code\u003e,Space的代码就会部署到你自己的Space中,为了方便自己每次调用可以不用填写API-key,您可以将\u003ca href=\"https://huggingface.co/spaces/wangrongsheng/ChatPaper/blob/5335124d25b1bc4017a2f5c48b0038dfa545bf63/app.py#L845\" rel=\"nofollow\"\u003eapp.py#L845\u003c/a\u003e 修改为您的密钥:\u003ccode\u003edefault=\"sk-abcdxxxxxxxx\"\u003c/code\u003e ,点击保存文件就会立即重新部署了;\u003c/li\u003e\n\u003cli\u003e[可选]公有化部署使用:点击\u003ca href=\"https://huggingface.co/spaces/wangrongsheng/ChatPaper?duplicate=true\" rel=\"nofollow\"\u003eDuplicate this space\u003c/a\u003e ,在弹出的页面中将\u003ccode\u003eVisibility\u003c/code\u003e选择为\u003ccode\u003ePublic\u003c/code\u003e,最后点击\u003ccode\u003eDuplicate Space\u003c/code\u003e,Space的代码就会部署到你自己的Space中,这样就可以完成一个公有化的部署。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e注:公有化部署和私有化部署根据你的需求二选一即可!\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e任意PDF全文翻译配置教程\u003c/h2\u003e\u003ca id=\"user-content-任意pdf全文翻译配置教程\" class=\"anchor\" aria-label=\"Permalink: 任意PDF全文翻译配置教程\" href=\"#任意pdf全文翻译配置教程\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e必须是在Ubuntu或者MacOS下使用!接下来的教程默认是Ubuntu18.04/20.04. 推荐使用vultr云服务器,非常省心。\u003c/li\u003e\n\u003cli\u003e在安装了ChatPaper默认依赖之后,激活它的虚拟环境,进入scipdf_parser-master文件夹,进入这个路径后,继续安装这里面的依赖。\u003c/li\u003e\n\u003cli\u003e安装好了这里的以来后,还需要安装Java的环境,我们推荐安装java11.0.19\u003c/li\u003e\n\u003cli\u003e先更新系统包:sudo apt-get update\u003c/li\u003e\n\u003cli\u003e然后命令安装 OpenJDK 11:sudo apt-get install openjdk-11-jdk\u003c/li\u003e\n\u003cli\u003e完成以上步骤后,你可以用以下命令来确认安装的 Java 版本:java -version\u003c/li\u003e\n\u003cli\u003e这将返回你当前的 Java 版本信息。到这一步,基本上Java的安装成功\u003c/li\u003e\n\u003cli\u003e再然后,再后台启动scipdf服务,这里需要下载不少依赖:bash serve_grobid.sh\u003c/li\u003e\n\u003cli\u003e等服务启动好后,可以不用管它,新开一个终端,启动python程序:python chat_summary.py\u003c/li\u003e\n\u003cli\u003e也可以后台默认启动serve_grobid.sh: nohup bash serve_grobid.sh\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e最后祝你使用的开心!\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e本地PDF全文翻译示例\u003c/h2\u003e\u003ca id=\"user-content-本地pdf全文翻译示例\" class=\"anchor\" aria-label=\"Permalink: 本地PDF全文翻译示例\" href=\"#本地pdf全文翻译示例\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e查看本地PDF全文翻译示例\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e强化学习、机器人学和模拟到真实世界的迁移\u003c/h1\u003e\u003ca id=\"user-content-强化学习机器人学和模拟到真实世界的迁移\" class=\"anchor\" aria-label=\"Permalink: 强化学习、机器人学和模拟到真实世界的迁移\" href=\"#强化学习机器人学和模拟到真实世界的迁移\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReinforcement Learning, Robotics, Sim-to-Real Transfer\u003c/h2\u003e\u003ca id=\"user-content-reinforcement-learning-robotics-sim-to-real-transfer\" class=\"anchor\" aria-label=\"Permalink: Reinforcement Learning, Robotics, Sim-to-Real Transfer\" href=\"#reinforcement-learning-robotics-sim-to-real-transfer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e摘要\u003c/h2\u003e\u003ca id=\"user-content-摘要\" class=\"anchor\" aria-label=\"Permalink: 摘要\" href=\"#摘要\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e当前的强化学习(Reinforcement Learning,RL)算法在长期任务中存在困难,其中时间可能被浪费在探索死胡同和任务进展可能很容易逆转的地方。我们开发了SPOT框架,该框架在行动安全区域内进行探索,学习有关不安全区域的信息而无需探索它们,并优先考虑逆转先前进展的经验,以实现卓越的学习效果。SPOT框架成功地完成了各种任务的模拟试验,在堆叠4个方块时,将基准试验成功率从13%提高到100%,在创建4个方块的行时,将基准试验成功率从13%提高到99%,在清理敌对模式下排列的玩具时,将基准试验成功率从84%提高到95%。在每次试验中,相对于行动次数,效率通常提高了30%或更多,而训练只需1-20k次行动,具体取决于任务。此外,我们还展示了直接的模拟到真实转移。通过在真实机器人上直接加载经过模拟训练的模型,无需进行额外的真实世界微调,我们能够在100%的试验中创建真实的堆叠,效率为61%,并在100%的试验中创建真实的行,效率为59%。据我们所知,这是首次将成功的模拟到真实转移应用于长期多步骤任务,如堆叠方块和创建行,并考虑到进展的逆转。代码可在\u003ca href=\"https://github.com/jhulcsr/good_robot%E8%8E%B7%E5%8F%96%E3%80%82%E7%B4%A2%E5%BC%95%E8%AF%8D-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E7%94%A8%E4%BA%8E%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BA%94%E7%94%A8%EF%BC%8C%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9C%A8%E6%8A%93%E5%8F%96%E5%92%8C%E6%93%8D%E4%BD%9C%E4%B8%AD%EF%BC%8C%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E3%80%82%E5%9C%A8%E7%9C%9F%E5%AE%9E%E4%B8%96%E7%95%8C%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E5%A4%9A%E6%AD%A5%E9%AA%A4%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA%E4%BB%BB%E5%8A%A1%E9%9D%9E%E5%B8%B8%E5%85%B7%E6%9C%89%E6%8C%91%E6%88%98%E6%80%A7%E3%80%82%E5%AE%83%E4%BB%AC%E5%B0%86%E8%A1%8C%E5%8A%A8%E7%9A%84%E5%8D%B3%E6%97%B6%E7%89%A9%E7%90%86%E5%90%8E%E6%9E%9C%E4%B8%8E%E4%BA%86%E8%A7%A3%E8%BF%99%E4%BA%9B%E5%90%8E%E6%9E%9C%E5%A6%82%E4%BD%95%E5%BD%B1%E5%93%8D%E6%95%B4%E4%BD%93%E7%9B%AE%E6%A0%87%E7%9A%84%E8%BF%9B%E5%B1%95%E7%9A%84%E9%9C%80%E6%B1%82%E7%9B%B8%E7%BB%93%E5%90%88%E3%80%82%E6%AD%A4%E5%A4%96%EF%BC%8C%E4%B8%8E%E4%BC%A0%E7%BB%9F%E7%9A%84%E5%8A%A8%E4%BD%9C%E8%A7%84%E5%88%92%E7%9B%B8%E5%8F%8D%EF%BC%8C%E5%90%8E%E8%80%85%E5%81%87%E8%AE%BE%E5%85%B7%E6%9C%89%E5%AE%8C%E7%BE%8E%E4%BF%A1%E6%81%AF%E5%92%8C%E5%B7%B2%E7%9F%A5%E7%9A%84%E8%A1%8C%E5%8A%A8%E6%A8%A1%E5%9E%8B%EF%BC%8C%E5%AD%A6%E4%B9%A0%E5%8F%AA%E8%83%BD%E4%BB%8E%E6%84%9F%E7%9F%A5%E7%8E%AF%E5%A2%83%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%9C%89%E9%99%90%E7%9A%84%E7%A9%BA%E9%97%B4%E5%92%8C%E6%97%B6%E9%97%B4%E4%BF%A1%E6%81%AF%E3%80%82\"\u003ehttps://github.com/jhulcsr/good_robot获取。索引词-计算机视觉用于其他机器人应用,深度学习在抓取和操作中,强化学习。在真实世界环境中,多步骤的机器人任务非常具有挑战性。它们将行动的即时物理后果与了解这些后果如何影响整体目标的进展的需求相结合。此外,与传统的动作规划相反,后者假设具有完美信息和已知的行动模型,学习只能从感知环境中获取有限的空间和时间信息。\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\"好机器人!\": 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)\u003c/h2\u003e\u003ca id=\"user-content-好机器人-用于多步骤视觉任务的高效强化学习与模拟到实际转移good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer\" class=\"anchor\" aria-label=\"Permalink: \u0026quot;好机器人!\u0026quot;: 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!\u0026quot;: Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)\" href=\"#好机器人-用于多步骤视觉任务的高效强化学习与模拟到实际转移good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e图1. 机器人创建的方块堆和行,通过模拟到实际转移。我们的正向任务计划(SPOT)框架可以帮助我们高效地找到能够完成多步骤任务的策略。视频概述:\u003ca href=\"https://youtu.be/MbCuEZadkIw\" rel=\"nofollow\"\u003ehttps://youtu.be/MbCuEZadkIw\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们的关键观察是,强化学习在探索行为时会浪费大量时间,而这些行为最多是无效的。例如,在堆叠方块的任务中(图1),人类知道抓取空中的空气永远不会抓住物体,这是“常识”,但对于普通算法来说,可能需要一些时间才能发现。为了解决这个问题,我们提出了正向任务计划(SPOT)框架,以一种能够显著加速学习和最终任务效率的方式将常识约束纳入深度强化学习(DRL)中[1],[2]。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e虽然这些约束是直观的,但将它们以一种能够实现可靠和高效学习的方式纳入深度强化学习中是非常困难的。我们的方法(第三节)受到一种人道而有效的宠物训练方法的启发,有时被称为“正向条件训练”。考虑训练一只名为“Spot”的狗忽略一个她特别感兴趣的物体或事件的目标。当Spot展示出部分符合期望的最终行为时,她会得到奖励,而在逆行的情况下,她会被立即从不得奖励的情况中移开。实现这一目标的一种方法是手中开始有多个奖励,将一个奖励放在Spot的视野中,如果她迫不及待地跳向奖励(一种负面行为),人类会立即夺走并隐藏奖励,以此来对该行为不给予奖励。通过反复训练,Spot最终会犹豫不决,这时她会立即得到称赞“好Spot!”并得到一个奖励,与此同时,她应该忽略的物体也会被移开。这种方法可以扩展到新的情况和行为,并且鼓励探索和快速改进一旦初始的部分成功被实现。正如我们在第三节中所描述的,我们的奖励函数和SPOT-Q学习也被设计成对于逆行的行为既不给予奖励也不进行惩罚。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e逆行的情况有不同的复杂性。一方面,无法将第一个方块堆叠在另一个方块上会使机器人处于类似的情况中,因此恢复需要Ω(1)个行动。然而,一旦存在一个由n个方块组成的堆叠,即使成功抓取也可能将整个堆叠推倒,逆转给定试验的整个行动历史(图3),因此恢复需要Ω(n)个行动。对于机器人学习多步骤任务的强化学习来说,后一种更为戏剧化的逆行情况是一个具有挑战性的问题;我们的工作提供了一种高效解决这种情况的方法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e总之,本文的贡献包括:\n1)用于多步骤任务的SPOT框架,它在模拟环境中改进了现有技术,并能够高效地在实际情况中进行训练。\n2)SPOT-Q学习,一种安全高效的训练方法,其中探索行为在运行时通过掩码进行聚焦,并从过去的经验中生成额外的即时训练样本。\n3)从模拟堆叠和行构建任务到实际环境中的零样本领域转移,以及对硬件和场景位置变化的鲁棒性。理想情况下,算法应该能够高效地学习避免这种情况,并通过绿色箭头所示的成功指标来取得成功。因此,需要考虑时间和工作空间的依赖关系。当前时间t i ∈ T,i ∈ [1...n]的事件可以影响过去行动t h |h \u0026lt; i和未来行动t j |j \u0026gt; i的成功结果的可能性。在我们的实验中,部分堆叠或行本身就是一个场景障碍物。这里的灰色墙壁仅用于说明目的。\n4)一项消融研究表明,情境去除显著减少了逆行情况;进展度指标提高了效率;试验奖励在折扣方面有所改进,但在效率和对稀疏奖励的支持之间存在权衡。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eII. 相关工作\u003c/h2\u003e\u003ca id=\"user-content-ii-相关工作\" class=\"anchor\" aria-label=\"Permalink: II. 相关工作\" href=\"#ii-相关工作\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e深度神经网络(DNNs)使得在机器人操作中可以使用原始传感器数据[1]-[5]。在某些方法中,DNN的输出直接对应于运动指令,例如[3],[4]。而高级方法则假设了机器人控制的简单模型,并专注于边界框或姿态检测,用于下游的抓取规划[1],[6]-[11]。RGB-D传感器可以带来益处[1],[11],[12],因为它们可以捕捉有关工作空间的物理信息。以物体为中心的技能学习可以有效且具有良好的泛化能力,例如[13]-[16]专注于通过将模拟堆栈分类为稳定或可能倒塌来进行堆叠。类似地,[17],[18]通过预测推动动作的结果来发展物理直觉。我们的工作不同之处在于,在多步任务的进展过程中,同时发展视觉理解和物理直觉。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e抓取是一个特别活跃的研究领域。DexNet [19],[20]从大量的自上而下抓取的深度图像中学习,并在抓取新物体时表现出极好的性能,但不考虑长期任务。6-DOF Grasp-Net [21]使用模拟抓取数据来推广到新物体,并已扩展到处理杂乱环境中新物体的可靠抓取[12]。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e深度强化学习(DRL)已经在机器人操作中的越来越复杂的任务中证明了其有效性[1],[5],[22],[23]。QT-Opt [5]通过对真实机器人上数十万次抓取尝试进行学习,掌握了操作技能。域自适应,例如在模拟中应用随机纹理,也可以增强从模拟到真实世界的转移[24],[25]。其他方法专注于将视觉运动技能从模拟机器人转移到真实机器人[22],[26]。我们的工作通过学习像素级成功概率图,不是直接回归扭矩向量,而是按照之前的工作[1],[23]指导低级控制器执行动作。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e稀疏奖励的多步任务对于强化学习来说是一个特殊的挑战,因为解决方案不太可能通过随机探索来发现。如果可用,演示可以是引导探索的有效方法[27]-[29]。多步任务可以分为包含草图的模块化子任务[30],而[31]具有机器人特定和任务特定的学习模块。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e在许多实际环境中,安全性对于强化学习至关重要[32]-[34]。第IV-D节的初步实验表明,SPOT-Q提供了一种将安全性纳入基于Q-Learning的通用算法的方法[35]。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们在第IV节和第V节将SPOT框架与VPG [1]进行了比较,VPG是一种基于强化学习的桌面清理任务的方法,可以在单个机器人上的几小时内从图像进行训练。VPG经常能够完成对抗性场景,例如首先将一组紧密堆叠的块推开,然后抓取现在分离的物体。最近的一些与之相关的工作涉及具有多个动作的任务:[36]将一个块放在另一个块上,[37]将一条毛巾放在杆上,[38]清空一个垃圾箱,但前两个任务不是长期任务,并且从未考虑到进展的逆转(图3)。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIII. 方法\u003c/h2\u003e\u003ca id=\"user-content-iii-方法\" class=\"anchor\" aria-label=\"Permalink: III. 方法\" href=\"#iii-方法\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们研究了多步骤任务,这些任务具有稀疏且近似的任务进展概念。通过采取以下四个措施,可以提高学习的效率:将这些问题结构化以捕捉数据的不变性属性,将传统算法应用于最有效的领域,确保奖励不会通过失败的动作传播,并引入一种可以消除不必要探索的算法。我们将在基于视觉的机器人操作的装配问题的背景下展示我们的方法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们将问题构建为一个马尔可夫决策过程(S,A,P,R),其中状态空间为S,动作空间为A,转移概率函数为P:S×S×A→R,奖励函数为R:S×A→R。这包括一个简化的假设,将传感器观测和状态等同起来。在时间步t,代理观察到状态s_t,并根据其策略π:S→A选择一个动作a_t。该动作以概率P(s_t+1 | s_t,a_t)导致新的状态s_t+1。与VPG [1]一样,我们使用Q-learning来生成选择动作的确定性策略。函数Q:S×A→R估计了给定状态下动作的预期奖励R,即动作的“质量”。我们的策略π如下选择动作a_t:\nπ(s_t) = arg max a∈A Q(s_t, a) (1)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e因此,训练的目标是学习一个最大化奖励R随时间变化的Q。这通过迭代地最小化|Q(s_t, a_t) - y_t|来实现,其中目标值y_t为:\ny_t = R(s_t+1, a_t) + γQ(s_t+1, π(s_t+1)) (2)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eQ-learning是强化学习中的一个基本算法,但在诸如机器人学等应用中,其最一般形式存在关键限制,其中动作和新试验的空间和成本非常大,高效的探索可能是至关重要甚至是安全关键的。它还高度依赖于奖励函数R,其定义可能导致学习效率相差数个数量级,正如我们在第IV-C节中所展示的,因此我们从奖励塑形的方法开始。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA. 奖励塑造\u003c/h2\u003e\u003ca id=\"user-content-a-奖励塑造\" class=\"anchor\" aria-label=\"Permalink: A. 奖励塑造\" href=\"#a-奖励塑造\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e奖励塑造是一种优化奖励R的有效技术,用于高效训练策略[39]和它们的神经网络。在这里,我们提出了几个奖励函数供后续比较(第IV-C节),这些函数构建了一个通用的奖励塑造公式,有助于在广泛的新任务上进行高效学习,从而减少成功奖励计划的临时性。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e假设每个动作a与一个子任务φ ∈ Φ相关联,并且我们有一个指示函数1 a [s t+1 , a t ],如果动作a t 在子任务φ上成功,则等于1,否则等于0。与VPG [1]类似,我们的基准奖励遵循这个原则,并包括一个子任务加权函数W:Φ → R,根据它们的主观难度和重要性进行加权:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base (s t+1 , a t ) = W (φ t )1 a [s t+1 , a t ] (3)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e接下来,我们定义了一个稀疏且近似的任务进展函数P:S → R ∈ [0, 1],表示朝着整体目标的比例进展,其中P(s t ) = 1表示任务完成。正如我们在Spot狗的故事中所讲述的(第I节),进展的逆转导致我们对代理进行情境移除(SR),并且有一个指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ) (4)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ) (5)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,每个奖励函数都可以“即时”获得。然而,它们并没有考虑早期错误可能导致许多步骤后失败的可能性(图3,4),因此我们将开发一种奖励,可以在整个试验中传播。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eW φ t ∈ {W push =0.1, W grasp =1, W place =1}。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e动作11-14:抓取和放置动作导致一个完整的高度为4的堆栈,完成了试验。动作14处的最终R trial 是2 × R P。这里为了图表的可见性,W φ t ∈ {W push = .5, W grasp = 1, W place =1.25}。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e在训练过程中,我们在物理上重置环境(图3)。我们定义了一个相关的指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ) (4)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ) (5)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,每个奖励函数都可以“即时”获得。然而,它们并没有考虑早期错误可能导致许多步骤后失败的可能性(图3,4),因此我们将开发一种奖励,可以在整个试验中传播。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eB. 情境移除:SPOT试验奖励\u003c/h2\u003e\u003ca id=\"user-content-b-情境移除spot试验奖励\" class=\"anchor\" aria-label=\"Permalink: B. 情境移除:SPOT试验奖励\" href=\"#b-情境移除spot试验奖励\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们是否可以通过一个奖励函数来考虑到导致后续时间步骤失败的动作,同时训练效率比标准的折扣奖励函数R D更高,其中 R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 )?我们的方法是通过情境移除的概念来阻止奖励在失败的动作中传播:其中 R * 可以是任意的即时奖励函数,如第III-A节中的 R SR 或 R P,N 标记着试验的结束,γ 是通常的折扣因子,设置为 γ = 0.65。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR trial (s t+1 , a t ) = ⎧ ⎪ ⎪ ⎨ ⎪ ⎪ ⎩ 0, 如果 R * (s t+1 , a t ) = 0 2R * (s t+1 , a t ), 如果 t = N R * (s t+1 , a t ) + γR trial (s t+2 , a t+1 ), 否则\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e使用 R trial 的效果是未来的奖励只在成功完成子任务的时间步骤中传播。如图4所示,并在图注中描述,情境移除的零奖励切断了包含失败动作的时间步骤中未来奖励的传播。这将学习重点放在了完成任务的短且成功的序列上。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eC. SPOT-Q学习和动态行动空间\u003c/h2\u003e\u003ca id=\"user-content-c-spot-q学习和动态行动空间\" class=\"anchor\" aria-label=\"Permalink: C. SPOT-Q学习和动态行动空间\" href=\"#c-spot-q学习和动态行动空间\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e在本节中,我们进一步利用关于环境的先验知识,做出简单但强大的假设,既减少无效尝试,又加快训练速度。具体而言,有许多情况下,某些动作的失败可以从用于Q学习的相同传感器信号中轻松预测出来。为此,我们假设存在一个预测器M (s t , a) → {0, 1},它接受当前状态s t 和一个动作a,并在动作肯定失败时返回0,在其他情况下返回1。这与成功指示器1 a [s t+1 , a t ]略有不同,后者需要动作a t 的结果s t+1 来确定成功或失败。4 使用M,我们定义动态行动空间M t (A):\nM t (A) = {a ∈ A|M (s t , a) = 1}。(7)\n简而言之,M t (A)并不告诉我们a ∈ A是否值得执行,而是告诉我们是否值得探索。给定状态s t,问题变为如何在训练中最有效地利用M t。如果π(s t ) ∈ M t (A),那么π(s t )可以被视为训练目的中的失败,我们可以探索下一个最好的不保证失败的动作。为了形式化这一点,我们引入了SPOT-Q学习,它是一个新的目标值函数,取代了(2):其中π M (s t ) = arg max a∈M t (A) Q(s t , a)。关键是,我们对既有0奖励的掩码动作,又对机器人实际执行的未掩码动作π M (s t )进行反向传播。算法1描述了我们如何通过SPOT-Q和优先经验回放(PER)[40]从过去的示例中进行持续训练,同时执行当前策略。在第IV节中,我们将讨论SPOT-Q如何使我们超越先前的工作,其中类似的启发式方法[1],[41]既无法与SPOT-Q匹敌,也无法考虑我们稍后讨论的安全性考虑。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003ey M,t = ⎧ ⎨ ⎩ y t , 如果π(s t+1 ) ∈ M t (A) y t + γQ(s t+1 , π M (s t+1 )) 否则 + R(s t+1 , a t )。(8)\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIV. 模拟实验\u003c/h2\u003e\u003ca id=\"user-content-iv-模拟实验\" class=\"anchor\" aria-label=\"Permalink: IV. 模拟实验\" href=\"#iv-模拟实验\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们的方法在VPG [1]的桌面清理任务以及我们设计的两个具有挑战性的多步骤任务上,提高了性能和动作效率。我们的最佳结果可以在模拟的堆叠和排列任务中实现100%的试验成功,并且我们展示了这些模型成功转移到了真实世界中(详见第五节)。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e为了理解我们方法中每个元素对整体性能的贡献,我们详细介绍了一系列的模拟实验。为此,我们评估了每个奖励函数、SPOT-Q对启发式探索的影响、其他可能的SPOT-Q实现、奖励加权项W,并且我们描述了使用SPOT-Q + R P和SPOT-Q + R trial 的最佳结果。简言之,我们发现情境移除R SR 对我们的性能改进最大,R P 提高了准确性和效率,而R trial 在训练过程中比折扣奖励更高效,同时考虑了动作和结果之间的时间延迟。SPOT-Q 在无遮蔽和仅基本遮蔽的情况下都改善了结果。最后,我们测试了一个网格世界导航任务[42],以展示SPOT框架如何应用于安全强化学习。表格I和III总结了这些结果。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA. 机器人实现细节\u003c/h2\u003e\u003ca id=\"user-content-a-机器人实现细节\" class=\"anchor\" aria-label=\"Permalink: A. 机器人实现细节\" href=\"#a-机器人实现细节\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们考虑一个能够在工作空间中被指定到特定臂部姿势和夹爪状态的机器人。我们的动作空间由三个组成部分组成:动作类型Φ,位置X × Y和角度Θ。代理通过一个固定的RGB-D相机观察环境,我们将其投影,使得z轴与重力方向对齐,如图2所示。我们将空间动作空间离散化为一个边长为0.448m的正方形高度图,具有224×224个坐标(x, y),因此每个像素大约表示4mm²,与VPG[1]相似。角度空间Θ = {2πik | i ∈ [0, k − 1]}同样被离散化为k = 16个箱子。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e动作类型集合包括三个高级运动基元Φ = {抓取,推动,放置}。在我们的实验中,动作的成功与我们夹爪的传感器有关,对于抓取,与推动有关的是物体的扰动,对于放置,与之相关的是堆叠高度或行长度的增加。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e传统的轨迹规划器在机器人上执行每个动作a = (φ, x, y, θ) ∈ A。对于抓取和放置,每个动作都会将机器人移动到(x, y),夹爪角度为θ ∈ Θ,并分别关闭或打开夹爪。推动动作从(x, y)处开始,夹爪关闭,并沿着角度θ水平移动固定距离。图2可视化了我们的整体算法,包括动作空间和相应的Q值。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eB. 评估指标\u003c/h2\u003e\u003ca id=\"user-content-b-评估指标\" class=\"anchor\" aria-label=\"Permalink: B. 评估指标\" href=\"#b-评估指标\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们根据VPG [1]中的指标在随机测试案例中评估我们的算法。理想动作效率为100%,计算方法是理想动作数除以实际动作数;对于抓取任务,定义为每个物体1个动作;对于涉及放置的任务,定义为每个物体2个动作。这意味着对于高度为4的堆叠任务,总共需要6个动作,因为只有3个物体需要移动;对于将两个方块放置在两个端点之间的行任务,总共需要4个动作。我们通过100次新的随机物体位置的试验来验证模拟结果两次。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eC. 算法剖析\u003c/h2\u003e\u003ca id=\"user-content-c-算法剖析\" class=\"anchor\" aria-label=\"Permalink: C. 算法剖析\" href=\"#c-算法剖析\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们在表格I中比较了底层算法的每个组成部分的贡献,并与基准方法进行了对比,除了在文本中提供的清理任务。除非另有说明,我们将行和堆栈汇总为一个组合平均值。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e清理20个玩具:我们通过VPG [1]中的主要模拟实验建立了一个基准,其中必须抓取20个形状各异的玩具以清理机器人工作区。SPOT框架与VPG [1]相匹配,任务完成率达到100%,并将抓取成功率从68%提高到84%,将动作效率从64%提高到74%。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e清理具有挑战性的玩具:第二个基准场景是来自VPG [1]的11个具有挑战性的玩具布局,其中玩具被放置在紧密堆放的配置中。每个案例运行10次,SPOT框架在7/11个案例中完全清除,而VPG [1]中只有5/11个案例被清除;所有110次运行中的清除率从84%提高到95%。在这种情况下,效率下降了,从60%降至38%,这是由于解决困难案例的数量增加,因为分离块可能需要多次尝试。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e奖励函数:R base ,R SR ,R P 和R trial 逐步扩展彼此(第III-A节,III-B节)。除非另有说明,本研究中禁用所有屏蔽操作。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR D s.t. R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 )是折扣奖励的最常见方法。当在最后一个时间步骤使用R P 进行评估,并且γ = 0.9时,抓取和放置动作的成功率分别为5%和45%。创建2-3层的堆栈,并且通过屏蔽操作改善了性能(32%,48%)。然而,这种方法非常低效,在20,000个动作中没有4层的堆栈。也就是说,如果能够进行数量级更多的训练,我们预计会收敛[43]。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base 对于推动和抓取是有效的[1],但对于多步任务来说是不够的,在最佳情况下,只能完成13%的行和堆栈,每个试验大约需要200多个动作。在另一种情况下,它经常在同一位置反复循环抓取然后放置相同的物体,导致99%的抓取成功率,但总体上没有成功的试验,即使在手动场景重置之后也是如此。我们不希望R base 在这些任务上收敛,因为没有进度信号表明,例如,从现有堆栈的顶部抓取是一个不好的选择。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR SR 立即解决了进度反转问题,因为此类动作不会获得奖励;因此,我们看到试验成功率从13%增加到94%,效率增加了一个数量级,达到23%,适用于两个任务,即每个试验大约需要22个动作。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR P 导致综合试验成功率提高到97%,效率提高到45%,即每个试验大约需要20个动作。这通过将定量的进度量纳入其中来改进纯情境消除。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR trial 在此测试中使用R P 作为即时奖励函数,堆栈的平均试验成功率为96%,效率为31%,即每个试验大约需要19个动作。然而,对于行,性能显著下降,试验成功率降至80%,动作效率仅为16%,即每个试验大约需要25个动作。这些值表明R trial 在R D 的低效性和R P 中更即时的进度指标之间进行了权衡,因为最近的值可以用于填充没有进度反馈的动作。我们还注意到,一旦添加了SPOT-Q,此奖励是堆栈中最好的奖励,并且在整体上是第二好的奖励,如下所示。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q:VPG [1]评估了指定要探索的确切位置的启发式方法,并发现它导致性能下降。QT-Opt [41]中的类似方法在训练过程中逐渐淘汰,表明它们在改善训练结果方面没有贡献。相比之下,SPOT-Q始终处于启用状态,并排除了零奖励可能性的区域,同时保持了其他感兴趣区域的开放性。那么,这种启发式设计的差异是否重要呢?\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e“屏蔽但没有SPOT-Q”测试禁用了算法1中的if语句,以模拟一个典型的启发式方法,其中将探索定向到特定区域而没有零奖励指导。与没有屏蔽的情况相比,“屏蔽但没有SPOT-Q”完成了95%的试验,而没有屏蔽的情况下为88%,有SPOT-Q的情况下为99%;动作效率的结果更加明显,分别为37%、23%和50%。这些结果和第IV-D节表明,SPOT-Q在整个训练和测试过程中都起作用,几乎不需要调整,因此我们得出结论,SPOT-Q提高了从启发式数据中学习的效率。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q的替代方法:我们评估了SPOT-Q的两种替代方法(eq. 8,算法1),其中所有屏蔽像素都进行了0奖励反向传播,并且在实际执行的动作上应用了屏蔽分数的(1)总和和(2)平均值的损失。在这两种情况下,梯度爆炸,算法无法收敛。只有SPOT-Q能够有效地提高收敛性。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e奖励加权:SPOT-Q + R P ,其中W push = 0.1,在99%的试验中成功,但当W push = 1.0时,只有27%的成功率。在没有屏蔽或SPOT-Q的情况下,图4中的加权对R trial 的影响实现了97%的堆栈成功和38%的动作效率,但为了保持一致性,我们保持所有加权值不变。这表明W (3) 对于有效的训练很重要。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q + R P :这种配置具有最佳的整体模拟性能,试验成功率为99%,效率为50%,即每个试验大约需要10个动作。它也是最好的模拟行模型,在一个测试中有98%的试验成功率,在第二个测试中有100%的成功率,动作效率为62-68%。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q + R trial :这是最好的堆栈模型,在两个测试案例中都完成了100%,效率为45-51%。整体性能是第二好的,试验成功率为97%,效率为37%,即每个试验大约需要14个动作。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eD. 安全性和领域泛化\u003c/h2\u003e\u003ca id=\"user-content-d-安全性和领域泛化\" class=\"anchor\" aria-label=\"Permalink: D. 安全性和领域泛化\" href=\"#d-安全性和领域泛化\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e为了展示SPOT框架的广泛适用性,我们在简单但具有挑战性的Safety Grid World [42](图5)环境上进行了评估,这是一种广泛用于评估强化学习算法的环境类型[32],[39]。在这个环境中,红色机器人必须向前移动或转向,以在不进入熔岩的情况下向绿色方块导航。如果我们只有一个真实的机器人在这个世界中进行学习,标准的深度强化学习(DRL)将会非常不安全,但是SPOT框架可以让机器人安全地探索空间。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e正如表III所示,所有改进都与我们更现实的任务一致。我们首先使用Rainbow [35],一种基于Q学习的DRL方法,它在500 k次动作中只能完成最多12%的试验,效率为12%。然后我们进行了一项小型消融研究,逐步添加了Masking、SPOT-Q和R P到Rainbow;分别完成了1000次测试试验的96.9%、95.5%和99.9%;平均效率分别为75%、73%和62%;完成30次验证试验的平均动作次数分别为123 k、113 k和70 k。所有使用掩码的失败都没有进入熔岩,它们达到了100次动作的限制。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e这些结果与我们更现实的实验一致,展示了SPOT框架如何在完全不同的场景中泛化,并说明了SPOT框架在安全探索中的应用。接下来,我们将展示SPOT框架如何直接将在仿真中获得的知识应用于真实机器人任务。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eV. REAL WORLD EXPERIMENTS (真实世界实验)\u003c/h2\u003e\u003ca id=\"user-content-v-real-world-experiments-真实世界实验\" class=\"anchor\" aria-label=\"Permalink: V. REAL WORLD EXPERIMENTS (真实世界实验)\" href=\"#v-real-world-experiments-真实世界实验\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e最后,我们对SPOT-Q在真实机器人任务上的表现进行了研究,包括从头开始的训练和模拟到真实的迁移。在这两种情况下,性能与在模拟中实现的性能大致相当,这显示了我们的方法在高效和有效的强化学习方面的优势。我们使用了[29]和[44]中描述的设置,包括通用机器人UR5、Robotiq 2指夹具和Primesense Carmine RGB-D相机;除了机械臂外,其他部分与我们的模拟不同。其他实现细节如IV-A节所述,并且结果见表II。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e真实推动和抓取:我们在真实世界中从头开始训练了基准推动和抓取任务,在20个物体上进行了测试,结果显示100%的测试通过率,75%的抓取成功率和1k次动作中的75%效率;这些结果与VPG [1]在2.5k次动作中的表现相当。模拟到真实的迁移在这个任务中没有成功。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e模拟到真实环境与真实环境堆叠比较\u003c/h2\u003e\u003ca id=\"user-content-模拟到真实环境与真实环境堆叠比较\" class=\"anchor\" aria-label=\"Permalink: 模拟到真实环境与真实环境堆叠比较\" href=\"#模拟到真实环境与真实环境堆叠比较\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e在模拟环境中训练后,我们直接将模型加载到真实机器人上执行。令人惊讶的是,所有经过测试的模拟到真实环境堆叠模型都完成了100%的试验,表现优于在真实机器人上训练的模型,后者在82%的试验中成功(图6,表II)。R P 和 R trial 的行动效率相等,均为61%,而没有 SPOT-Q 或掩码的 R P 版本的效率稍低,为51%。这一点尤其令人印象深刻,考虑到我们的场景暴露在变化的阳光下。直观上,这些结果部分是由于在堆叠和行制作中使用了深度高度图作为输入。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e模拟到真实环境的行制作:我们的 R P + SPOT-Q 模拟到真实环境的行制作模型在100%的尝试中都能成功创建行,效率为59%。R trial + SPOT-Q 和没有掩码的 R P 的表现稍差,都有90%的试验完成,效率分别为83%和58%。没有掩码的 R P 的高效率是因为当任务变得无法恢复,例如一个方块从工作区域掉落时,我们会立即结束真实试验。在这种情况下,我们只评估模拟到真实的转移,因为训练进展比堆叠任务慢得多。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们预计基于方块的任务能够转移,因为网络主要依赖深度图像,这在模拟和真实数据之间更加一致。这可能合理地解释了为什么推动和抓取不能转移,这个问题可以通过未来的工作中使用域自适应等方法来缓解[24],[25]。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eVI. 结论\u003c/h2\u003e\u003ca id=\"user-content-vi-结论\" class=\"anchor\" aria-label=\"Permalink: VI. 结论\" href=\"#vi-结论\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们已经证明了SPOT框架对于训练长期任务是有效的。据我们所知,这是首次将强化学习成功应用于长期多步任务,如堆叠方块和创建带有进度逆转考虑的行。SPOT框架可以量化代理在多步任务中的进展,同时提供零奖励指导、掩码动作空间和情境移除。它能够快速学习从模拟到真实世界的策略。我们发现这些方法是实现真实堆叠任务和行制作任务的100%完成率所必需的。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT的主要限制是虽然中间奖励可能稀疏,但仍然是必要的。未来的研究应该探索从数据中学习任务结构的方法,其中包括情境移除。此外,动作空间掩码M目前是手动设计的;这个掩码和较低层次的开环动作也可以进行学习。另一个需要研究的课题是在推动和抓取任务与堆叠和行任务之间成功的模拟到真实转移的差异。最后,我们希望将我们的方法应用于更具挑战性的任务。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e致谢\u003c/h2\u003e\u003ca id=\"user-content-致谢\" class=\"anchor\" aria-label=\"Permalink: 致谢\" href=\"#致谢\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们要特别感谢Adit Murali对安全网格世界的整合;感谢Molly O'Brien提供宝贵的讨论、反馈和编辑意见;感谢Corinne Hundt为“好机器人!”标题的撰写;感谢Michelle Hundt、Thomas Hundt和Ian Harkins的编辑工作;感谢所有阅读、审阅和提供反馈意见的人;感谢VPG[1]的作者们发布他们的代码。\u003c/p\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e本地PDF全文总结示例\u003c/h2\u003e\u003ca id=\"user-content-本地pdf全文总结示例\" class=\"anchor\" aria-label=\"Permalink: 本地PDF全文总结示例\" href=\"#本地pdf全文总结示例\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e查看本地PDF全文总结示例示例\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e强化学习用于长期任务的学习\u003c/h1\u003e\u003ca id=\"user-content-强化学习用于长期任务的学习\" class=\"anchor\" aria-label=\"Permalink: 强化学习用于长期任务的学习\" href=\"#强化学习用于长期任务的学习\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReinforcement learning for long-horizon tasks\u003c/h2\u003e\u003ca id=\"user-content-reinforcement-learning-for-long-horizon-tasks\" class=\"anchor\" aria-label=\"Permalink: Reinforcement learning for long-horizon tasks\" href=\"#reinforcement-learning-for-long-horizon-tasks\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAbstract (摘要)\u003c/h2\u003e\u003ca id=\"user-content-abstract-摘要\" class=\"anchor\" aria-label=\"Permalink: Abstract (摘要)\" href=\"#abstract-摘要\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本文介绍了一种针对长期任务的强化学习算法,该算法在探索过程中避免了浪费时间在无效路径上,并且能够有效地学习逆转之前的进展。我们开发了SPOT框架,该框架在行动安全区域内进行探索,学习有关不安全区域的信息,而无需真正探索这些区域,并且优先考虑逆转之前的经验,以实现高效学习。在模拟试验中,SPOT框架成功完成了各种任务,将基准试验的成功率从13%提高到了100%(当堆叠4个方块时),从13%提高到了99%(当创建4个方块的行时),以及从84%提高到了95%(当清除以对抗模式排列的玩具时)。与每次试验的行动次数相比,效率通常提高了30%或更多,而训练时间只需1-20 k次行动,具体取决于任务的复杂程度。此外,我们还展示了直接从模拟到真实环境的迁移能力。通过在真实机器人上直接加载经过模拟训练的模型,无需进行额外的真实世界微调,我们能够在100%的试验中成功堆叠真实方块,效率为61%,并在100%的试验中成功创建真实行,效率为59%。据我们所知,这是首次将成功的模拟到真实迁移应用于长期多步骤任务(如堆叠方块和创建行)并考虑到进展逆转的强化学习实例。代码可在\u003ca href=\"https://github.com/jhulcsr/good_robot%E4%B8%8A%E8%8E%B7%E5%BE%97%E3%80%82%E7%B4%A2%E5%BC%95%E8%AF%8D-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E5%9C%A8%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BA%94%E7%94%A8%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%EF%BC%8C%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9C%A8%E6%8A%93%E5%8F%96%E5%92%8C%E6%93%8D%E7%BA%B5%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%EF%BC%8C%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E3%80%82\"\u003ehttps://github.com/jhulcsr/good_robot上获得。索引词-计算机视觉在其他机器人应用中的应用,深度学习在抓取和操纵中的应用,强化学习。\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\"Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer\u003c/h2\u003e\u003ca id=\"user-content-good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer\" class=\"anchor\" aria-label=\"Permalink: \u0026quot;Good Robot!\u0026quot;: Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer\" href=\"#good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节介绍了一种名为\"Schedule for Positive Task (SPOT)\"的框架,用于在多步骤视觉任务中高效地进行强化学习。作者观察到,强化学习在探索行为时往往浪费了大量时间,而这些行为在最好的情况下也是无效的。为了解决这个问题,作者提出了SPOT框架,该框架将常识约束融入到深度强化学习中,从而显著加速学习过程并提高任务效率。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSPOT框架受到了训练宠物的有效方法的启发,即\"正向条件训练\"。作者将这种方法应用于强化学习中,通过奖励部分符合期望行为的行为,并在逆行为发生时立即停止奖励,从而鼓励探索和快速改进。作者的奖励函数和SPOT-Q学习方法也被设计成不对逆行为进行奖励或惩罚。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e在多步骤任务中,逆行为的复杂性各不相同。对于一些简单的任务,如将第一个方块叠放在另一个方块上,恢复到初始状态只需要几个动作。但是,一旦存在一个由n个方块组成的堆栈,即使成功抓取一个方块,整个堆栈也可能被打翻,导致之前的所有动作都被逆转,恢复的复杂度将是Ω(n)。这种更复杂的逆行为对于机器人的多步骤任务强化学习来说是一个具有挑战性的问题,而作者的工作提供了一种高效解决这种情况的方法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e本文的贡献包括:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eSPOT框架,用于强化学习多步骤任务,在模拟环境和真实环境中都能有效训练。\u003c/li\u003e\n\u003cli\u003eSPOT-Q学习方法,一种安全高效的训练方法,通过运行时的探索和从过去经验中生成额外的训练样本来提高效率。\u003c/li\u003e\n\u003cli\u003e在模拟环境和真实环境中实现了零样本领域转移,以及对硬件和场景位置变化的鲁棒性。\u003c/li\u003e\n\u003cli\u003e通过消除逆行为,提高了进展的效率;通过引入进展度量,提高了效率;通过试验奖励改进了折扣方法,但在效率和稀疏奖励支持之间存在权衡。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e总之,本文提出的SPOT框架在多步骤视觉任务的强化学习中取得了显著的进展,提高了学习效率和任务效果。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eII. RELATED WORK (相关工作)\u003c/h2\u003e\u003ca id=\"user-content-ii-related-work-相关工作\" class=\"anchor\" aria-label=\"Permalink: II. RELATED WORK (相关工作)\" href=\"#ii-related-work-相关工作\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节介绍了与本研究相关的工作。首先,深度神经网络(DNNs)的应用使得机器人操作中的原始传感器数据得以利用。一些方法中,DNN的输出直接对应于运动指令。而其他高级方法则假设了机器人控制的简单模型,并专注于边界框或姿态检测,以进行下游的抓取规划。RGB-D传感器可以提供关于工作空间的物理信息。目标中心技能学习可以有效且广泛地推广,例如通过将模拟堆叠分类为稳定或可能倒塌的方法。类似地,通过预测推动动作的结果来发展物理直觉的方法也有。本研究与这些方法的不同之处在于,在多步骤任务的进展过程中,同时发展视觉理解和物理直觉。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e抓取是一个特别活跃的研究领域。DexNet学习了大量的自顶向下抓取的深度图像,并在抓取新对象时表现出极好的性能,但没有考虑长期任务。6-DOF Grasp-Net使用模拟抓取数据来推广到新对象,并已扩展到处理杂乱环境中新对象的可靠抓取。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e强化学习(DRL)在机器人操作中越来越复杂的任务中证明了其有效性。QT-Opt从真实机器人上进行了数十万次的实际抓取尝试中学习了操作技能。领域适应,例如在模拟中应用随机纹理,也可以增强从模拟到真实世界的迁移。其他方法专注于从模拟机器人到真实机器人的视觉运动技能迁移。本研究通过学习像素级成功概率图,遵循先前的工作,通过指导低级控制器执行动作而不是直接回归力矩向量。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e在强化学习中,多步骤任务的稀疏奖励是一个特殊的挑战,因为解决方案不太可能通过随机探索来发现。如果有可用的演示,它可以是引导探索的有效方法。多步骤任务可以分为包含草图的模块化子任务,而[31]则具有机器人特定和任务特定的学习模块。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e在许多现实世界的环境中,安全性对于强化学习至关重要。第四节的初步实验表明,SPOT-Q为将安全性纳入基于Q-Learning的通用算法提供了一种方法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们在第四和第五节将SPOT框架与VPG进行了比较。VPG是一种基于强化学习的桌面清理任务的方法,可以在单个机器人上的几个小时内通过图像进行训练。VPG通常能够完成对抗性场景,例如首先将一组紧密堆叠的块推开,然后抓取现在分离的对象。最近的一些相关工作涉及具有多个动作的任务,其中[36]将一个块放在另一个块上,[37]将一块毛巾放在杆上,[38]清理一个垃圾箱,但前两者都不是长期任务,并且从未考虑到进展的逆转(图3)。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIII. APPROACH (方法)\u003c/h2\u003e\u003ca id=\"user-content-iii-approach-方法\" class=\"anchor\" aria-label=\"Permalink: III. APPROACH (方法)\" href=\"#iii-approach-方法\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们研究了长期任务中稀疏且近似的任务进展概念。通过以下四个措施,可以提高学习的效率:将这些问题结构化以捕捉数据的不变性属性,使用传统算法在最有效的地方部署,确保奖励不会通过失败的动作传播,引入一种可以消除不必要探索的算法。我们将在基于视觉的机器人操作中的组装问题的背景下展示我们的方法。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e我们将问题构建为一个马尔可夫决策过程 (S, A, P, R),其中状态空间为 S,动作空间为 A,转移概率函数为 P: S × S × A → R,奖励函数为 R: S × A → R。这包括了一个简化的假设,将传感器观测和状态等同起来。在时间步 t,代理观察到状态 s_t,并根据其策略 π: S → A 选择动作 a_t。该动作导致新的状态 s_t+1 的概率为 P(s_t+1 | s_t, a_t)。与 VPG [1] 类似,我们使用 Q-learning 来生成选择动作的确定性策略。函数 Q: S × A → R 估计了从给定状态选择动作的预期奖励 R,即动作的“质量”。我们的策略 π 如下选择动作 a_t:\nπ(s_t) = arg max a∈A Q(s_t, a) (1)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e因此,训练的目标是学习一个最大化奖励 R 的 Q。这通过迭代地最小化 |Q(s_t, a_t) - y_t| 来实现,其中目标值 y_t 为:\ny_t = R(s_t+1, a_t) + γQ(s_t+1, π(s_t+1)) (2)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eQ-learning 是强化学习中的一种基本算法,但在应用于机器人等动作空间和试验成本极高的领域时,存在一些关键限制,高效的探索甚至可能是安全关键的。它还高度依赖于奖励函数 R,其定义可能导致学习效率相差几个数量级,我们在第 IV-C 节中展示了这一点,因此我们首先介绍了奖励塑形的方法。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA. Reward Shaping (奖励塑造)\u003c/h2\u003e\u003ca id=\"user-content-a-reward-shaping-奖励塑造\" class=\"anchor\" aria-label=\"Permalink: A. Reward Shaping (奖励塑造)\" href=\"#a-reward-shaping-奖励塑造\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e奖励塑造是一种优化奖励R的有效技术,用于高效训练策略[39]和它们的神经网络。在这里,我们提出了几个奖励函数以供后续比较(第IV-C节),这些函数建立了一个通用的奖励塑造形式,有助于在广泛的新任务上进行高效学习,从而减少成功奖励计划的临时性质。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e假设每个动作a与一个子任务φ ∈ Φ相关联,并且我们有一个指示函数1 a [s t+1 , a t ],如果动作a t 在φ上成功,则等于1,否则等于0。与VPG [1]类似,我们的基准奖励遵循这个原则,并包括一个子任务加权函数W : Φ → R,根据其主观难度和重要性进行加权:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base (s t+1 , a t ) = W (φ t )1 a [s t+1 , a t ].\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e接下来,我们定义了一个稀疏且近似的任务进展函数P : S → R ∈ [0, 1],表示朝着整体目标的比例进展,其中P(s t ) = 1表示任务完成。与我们在Spot the dog的故事中一样(第I节),进展的逆转导致我们对代理进行情境移除(SR),并在训练过程中对环境进行物理重置(图3)。我们定义了一个相关的指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,它们都可以“即时”获得。然而,它们没有考虑到早期错误可能导致很多步骤后的失败的可能性(图3, 4),因此我们将开发一种奖励,可以在整个试验中传播。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eW φ t ∈ {W push =0.1, W grasp =1, W place =1}.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eW φ t ∈ {W push = .5, W grasp = 1, W place =1.25} for chart visibility.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR trial at a 14 is 2 × R P.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eR P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ).\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eB. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)\u003c/h2\u003e\u003ca id=\"user-content-b-situation-removal-spot-trial-reward-情境移除spot试验奖励\" class=\"anchor\" aria-label=\"Permalink: B. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)\" href=\"#b-situation-removal-spot-trial-reward-情境移除spot试验奖励\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节讨论了在训练效率高于标准折扣奖励R_D(s_t+1, a_t)= γ R_D(s_t+2, a_t+1)的情况下,奖励函数是否能够考虑到导致后续时间步骤失败的动作。我们的方法是通过情境移除的概念来阻止奖励在失败的动作中传播,其中R*可以是任意的即时奖励函数,例如来自第III-A节的R_SR或R_P,N标记了试验的结束,γ是通常的折扣因子,设置为γ = 0.65。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e使用R_trial的效果是,未来的奖励只在成功完成子任务的时间步骤中传播。如图4所示,并在说明中描述,情境移除的零奖励切断了包含失败动作的时间步骤中未来奖励的传播。这将学习集中在短且成功的序列上,以完成任务。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eC. SPOT-Q学习和动态行动空间\u003c/h2\u003e\u003ca id=\"user-content-c-spot-q学习和动态行动空间-1\" class=\"anchor\" aria-label=\"Permalink: C. SPOT-Q学习和动态行动空间\" href=\"#c-spot-q学习和动态行动空间-1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节中,我们进一步利用关于环境的先验知识,做出简单但强大的假设,既减少无效尝试,又加速训练。具体而言,有许多情况下,某些动作失败可以从用于Q学习的相同传感器信号中轻松预测出来。为此,我们假设存在一个神谕M(s_t, a) → {0, 1},它接受当前状态s_t和一个动作a,并在动作肯定会失败时返回0,否则返回1。这与成功指示器1_a[s_t+1, a_t]略有不同,后者需要动作a_t的结果s_t+1来确定成功或失败。使用M,我们定义动态行动空间M_t(A):\nM_t(A) = {a ∈ A|M(s_t, a) = 1}。(7)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e简而言之,M_t(A)并不告诉我们a ∈ A是否值得执行,而是告诉我们是否值得探索。给定状态s_t,问题变成如何在训练中最有效地利用M_t。如果π(s_t) ∈ M_t(A),那么π(s_t)可以被视为学习目的中的失败,我们可以探索下一个最有可能不会失败的动作。为了形式化这一点,我们引入了SPOT-Q学习,它是一个新的目标值函数,取代了(2):其中π_M(s_t) = arg max a∈M_t(A) Q(s_t, a)。关键是,我们对既有0奖励的掩码动作,也对机器人实际执行的未掩码动作π_M(s_t)进行反向传播。算法1描述了我们如何通过SPOT-Q和优先经验回放(PER)[40]从过去的示例中持续进行训练,同时还展示了当前策略的执行过程。在第四节中,我们将讨论SPOT-Q如何超越之前的工作,其中类似的启发式方法[1],[41]既无法与SPOT-Q匹敌,也无法考虑我们稍后讨论的安全性考虑。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003ey_M,t = ⎧ ⎨ ⎩ y_t,如果π(s_t+1) ∈ M_t(A) y_t + γQ(s_t+1, π_M(s_t+1)),否则 + R(s_t+1, a_t)。(8)\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIV. SIMULATION EXPERIMENTS\u003c/h2\u003e\u003ca id=\"user-content-iv-simulation-experiments\" class=\"anchor\" aria-label=\"Permalink: IV. SIMULATION EXPERIMENTS\" href=\"#iv-simulation-experiments\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节介绍了一系列的模拟实验,以了解我们方法中每个元素对整体性能的贡献。我们评估了每个奖励函数、SPOT-Q对启发式探索的影响、其他可能的SPOT-Q实现、奖励加权项W,并描述了我们在SPOT-Q + R_P和SPOT-Q + R_trial上取得的最佳结果。简而言之,我们发现情境移除R_SR对我们的性能改进最大,R_P提高了准确性和效率,而R_trial在考虑行动和后果之间的时间延迟的同时,训练效果更好。SPOT-Q相对于无掩码和基本掩码都提高了结果。最后,我们测试了一个网格世界导航任务[42],以展示SPOT框架如何应用于安全强化学习。表I和表III总结了这些结果。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(Our method improves performance and action efficiency over the state of the art on the table clearing task from VPG [1], as well as on two challenging multi-step tasks of our design: creating a stack of four blocks and creating a horizontal row of four blocks. Our best results can achieve 100% trial success on the simulated stacking and row tasks, models which successfully transfer to the real world as we show in Section V.)\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA. Robot Implementation Details (机器人实施细节)\u003c/h2\u003e\u003ca id=\"user-content-a-robot-implementation-details-机器人实施细节\" class=\"anchor\" aria-label=\"Permalink: A. Robot Implementation Details (机器人实施细节)\" href=\"#a-robot-implementation-details-机器人实施细节\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们考虑一个能够在其工作空间内被指定到特定的臂部姿势和夹持器状态的机器人。我们的动作空间由三个组成部分组成:动作类型Φ,位置X × Y和角度Θ。代理通过一个固定的RGB-D相机观察环境,我们将其投影,使得z轴与重力方向对齐,如图2所示。我们将空间动作空间离散化为一个边长为0.448m的正方形高度图,具有224×224个坐标(x, y),因此每个像素大约表示4mm²,根据VPG [1]。角度空间Θ = {2πik | i ∈ [0, k-1]}同样被离散化为k = 16个bin。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e动作类型集合包括三个高级运动原语Φ = {抓取,推动,放置}。在我们的实验中,动作的成功与我们夹持器的传感器对于抓取,物体的扰动对于推动,以及堆叠高度或行长度的增加对于放置有关。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e传统的轨迹规划器在机器人上执行每个动作a = (φ, x, y, θ) ∈ A。对于抓取和放置,每个动作将移动到(x, y)并具有夹持器角度θ ∈ Θ,并分别关闭或打开夹持器。推动动作从(x, y)处的闭合夹持器开始,并沿着角度θ水平移动固定距离。图2可视化了我们的整体算法,包括动作空间和相应的Q值。\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eB. Evaluation Metrics (评估指标)\u003c/h2\u003e\u003ca id=\"user-content-b-evaluation-metrics-评估指标\" class=\"anchor\" aria-label=\"Permalink: B. Evaluation Metrics (评估指标)\" href=\"#b-evaluation-metrics-评估指标\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e我们按照VPG [1]中的指标,在随机测试用例中评估我们的算法。理想的动作效率为100%,计算方法是理想动作数除以实际动作数。对于抓取任务,每个物体只需要1个动作;对于涉及放置的任务,每个物体需要2个动作。例如,对于高度为4的堆叠任务,只需要移动3个物体,因此总共需要6个动作;对于将两个块放置在两个端点之间的行任务,总共需要4个动作。我们通过100次随机的新物体位置试验两次验证模拟结果。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e[1] VPG: Virtual-to-Physical Robot Grasping.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eC. 算法剖析\u003c/h2\u003e\u003ca id=\"user-content-c-算法剖析-1\" class=\"anchor\" aria-label=\"Permalink: C. 算法剖析\" href=\"#c-算法剖析-1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e本节通过表格I中的对比,比较了底层算法的每个组成部分与基准方法的贡献。除了在文本中提供的清理任务外,我们将行和堆栈总结为一个平均值。\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e清理20个玩具:我们通过在VPG [1]中找到的主要模拟实验建立了一个基准,其中必须抓取20个形状各异的玩具以清理机器人工作区。SPOT框架与VPG [1]完全匹配,任务完成率从68%提高到84%,抓取成功率从64%提高到74%。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e对抗性清理玩具:第二个基准场景是来自VPG [1]的11个具有挑战性的对抗性布局,其中玩具被放置在紧密堆积的配置中。每个案例运行10次,SPOT框架完全清除了7/11个案例,而VPG [1]中只有5/11个案例;所有110次运行的清除率从84%提高到95%。在这种情况下,效率从60%下降到38%,这是由于解决困难案例的数量增加,因为分离块可能需要多次尝试。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e奖励函数:R base,R SR,R P和R trial逐步扩展彼此(第III-A节,III-B节)。除非另有说明,否则本研究中禁用所有掩码。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eR D ,即 R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 ),是一种常规的试验奖励方法。当使用 R P 在最后一个时间步骤和 γ = 0.9 进行评估时,抓取和放置动作的成功率分别为5%和45%。创建2-3层的堆栈,并且使用掩码后性能提高(32%,48%)。然而,这种方法非常低效,20,000次动作中没有4层的堆栈。尽管如此,如果能够进行数量级更多的训练,我们预计会收敛[43]。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eR base 对于推动和抓取是有效的[1],但对于多步任务来说不够。在最佳情况下,只能完成13%的行和堆栈,每次试验需要约200次动作。在另一种情况下,它经常反复推动和放置同一个物体,导致99%的抓取成功率,但整体上没有成功的试验,即使手动重置场景。我们不希望R base在这些任务上收敛,因为没有进展信号表明从现有堆栈的顶部抓取是一个不好的选择。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eR SR 立即解决了进展反转问题,因为这样的动作得到0的奖励;因此,我们看到试验成功率从13%增加到94%,效率增加一个数量级,达到23%,适用于两个任务,即每次试验大约需要22次动作。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eR P 导致试验成功率提高到97%,效率提高到45%,即每次试验大约需要20次动作。通过将定量的进展量纳入其中,这种方法改进了纯粹的情境消除。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eR trial 在这个测试中将 R P 作为即时奖励函数,并且堆栈的平均试验成功率为96%,效率为31%,即每次试验大约需要19次动作。然而,对于行,性能显著下降,试验成功率下降到80%,动作效率仅为16%,即每次试验大约需要25次动作。这些值表明 R trial 在 R D 的低效和 R P 中更即时的进展度之间进行了权衡,因为最近的值可以用来填充没有进展反馈的动作。我们还注意到,一旦添加了SPOT-Q,这个奖励是堆栈中最好的,总体上是第二好的,如下所示。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q:VPG [1]评估了指定要探索的确切位置的启发式方法,发现它导致性能更差。在QT-Opt [41]中,类似的方法在训练过程中被淘汰,表明它们对改善训练结果没有贡献。相比之下,SPOT-Q始终处于启用状态,并且剔除了没有成功可能性的区域,而其他感兴趣的区域仍然可以进行探索。那么,这种启发式设计的差异重要吗?\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e“掩码但没有SPOT-Q”测试禁用了算法1中的if语句,以模拟典型的启发式方法,其中探索被定向到特定区域而没有零奖励的指导。与无掩码和无SPOT-Q相比,“掩码但没有SPOT-Q”完成了95%的试验,动作效率分别为37%、23%和50%。这些结果和第IV-D节表明,SPOT-Q在整个训练和测试过程中都能有效地工作,几乎不需要调整,因此我们得出结论,SPOT-Q提高了从启发式数据中学习的效率。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q的替代方案:我们评估了SPOT-Q的两种替代方案(eq. 8,算法1),其中对所有掩码像素执行0奖励反向传播,并在实际执行的动作中对掩码得分的(1)总和和(2)平均值应用损失。在这两种情况下,梯度爆炸,算法无法收敛。只有SPOT-Q能够有效地提高收敛速度。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e奖励加权:SPOT-Q + R P,其中 W push = 0.1,在99%的试验中成功,但当 W push = 1.0 时,成功率只有27%。在没有掩码或SPOT-Q的情况下,图4中的加权对 R trial 的影响达到了97%的堆栈成功率和38%的动作效率,但为了保持一致性,我们将所有加权保持不变。这表明 W (3) 对于高效的训练很重要。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q + R P:这种配置具有最佳的整体模拟性能,试验成功率为99%,效率为50%,即每次试验大约需要10次动作。它也是最好的模拟行模型,在一个测试中的试验成功率为98%,在第二个测试中为100%,动作效率为62-68%。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eSPOT-Q + R trial:这是最好的堆栈模型,在两个测试案例中都完成了100%,效率为45-51%。总体性能是第二好的,试验成功率为97%,效率为37%,即每次试验大约需要14次动作。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e全文总结示例\u003c/h2\u003e\u003ca id=\"user-content-全文总结示例\" class=\"anchor\" aria-label=\"Permalink: 全文总结示例\" href=\"#全文总结示例\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e查看全文总结结果\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePaper:1\u003c/h2\u003e\u003ca id=\"user-content-paper1\" class=\"anchor\" aria-label=\"Permalink: Paper:1\" href=\"#paper1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eTitle: Diffusion Policy: Visuomotor Policy Learning via Action Diffusion 中文标题: 通过行为扩散的视觉运动策略学习\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAuthors: Haonan Lu, Yufeng Yuan, Daohua Xie, Kai Wang, Baoxiong Jia, Shuaijun Chen\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eAffiliation: 中南大学\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eKeywords: Diffusion Policy, Visuomotor Policy, robot learning, denoising diffusion process\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eUrls: \u003ca href=\"http://arxiv.org/abs/2303.04137v1\" rel=\"nofollow\"\u003ehttp://arxiv.org/abs/2303.04137v1\u003c/a\u003e, Github: None\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003eSummary:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e(1): 本文研究的是机器人视觉动作策略的学习。机器人视觉动作策略的学习是指根据观察到的信息输出相应的机器人运动动作,这一任务较为复杂和具有挑战性。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(2): 过去的方法包括使用高斯混合模型、分类表示,或者切换策略表示等不同的动作表示方式,但依然存在多峰分布、高维输出空间等挑战性问题。本文提出一种新的机器人视觉运动策略模型 - Diffusion Policy,其结合了扩散模型的表达能力,克服了传统方法的局限性,可以表达任意分布并支持高维空间。本模型通过学习代价函数的梯度,使用随机Langevin动力学算法进行迭代优化,最终输出机器人动作。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(3): 本文提出的机器人视觉动作策略 - Diffusion Policy,将机器人动作表示为一个条件去噪扩散过程。该模型可以克服多峰分布、高维输出空间等问题,提高了策略学习的表达能力。同时,本文通过引入展望控制、视觉诱导和时间序列扩散变换等技术,继续增强了扩散策略的性能。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(4): 本文的方法在11个任务上进行了测试,包括4个机器人操纵基准测试。实验结果表明,Diffusion Policy相对于现有的机器人学习方法,表现出明显的优越性和稳定性,平均性能提升了46.9%。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/93dc866d4c8f3757c5596d5607e351e3158d4dbe968c3dd8249f544311baf851/68747470733a2f2f67697465652e636f6d2f6368617470617065722f6368617470617065722f7261772f6d61737465722f696d616765732f446966667573696f6e20506f6c6963793a20566973756f6d6f746f7220506f6c696379204c6561726e696e672076696120416374696f6e20446966667573696f6e2d323032332d30332d30382d32312d35352d35332e6a706567\"\u003e\u003cimg alt=\"Fig\" src=\"https://camo.githubusercontent.com/93dc866d4c8f3757c5596d5607e351e3158d4dbe968c3dd8249f544311baf851/68747470733a2f2f67697465652e636f6d2f6368617470617065722f6368617470617065722f7261772f6d61737465722f696d616765732f446966667573696f6e20506f6c6963793a20566973756f6d6f746f7220506f6c696379204c6561726e696e672076696120416374696f6e20446966667573696f6e2d323032332d30332d30382d32312d35352d35332e6a706567\" data-canonical-src=\"https://gitee.com/chatpaper/chatpaper/raw/master/images/Diffusion Policy: Visuomotor Policy Learning via Action Diffusion-2023-03-08-21-55-53.jpeg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e7.Methods:\n本文提出的视觉动作策略学习方法,即Diffusion Policy,包括以下步骤:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(1) 建立条件去噪扩散过程:将机器人动作表示为一个含有高斯噪声的源的条件随机扩散过程。在该过程中,机器人状态作为源,即输入,通过扩散过程输出机器人的运动动作。为了将其变为条件随机扩散模型,我们加入了代价函数,它在路径积分中作为条件。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(2) 引入随机Langevin动力学:将学习代价函数的梯度转换为基于随机Langevin动力学的迭代优化问题。该方法可以避免显示计算扩散过程,并且可以满足无导数优化器的要求,使其受益于渐近高斯性质以及全局收敛性质。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(3) 引入扩散策略增强技术:使用展望控制技术,结合决策网络,对由扩散产生的动作进行调整,从而增强策略的性能。同时,引入视觉诱导以及时间序列扩散变换,来进一步提高扩散策略的表达能力。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(4) 在11个任务上进行测试:测试结果表明,该方法相对于现有的机器人学习方法,在机器人操纵基准测试中表现出明显的优越性和稳定性,平均性能提升了46.9%。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e7.Conclusion: \u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(1):本文研究了机器人视觉动作策略的学习方法,提出了一种新的机器人视觉运动策略模型 - Diffusion Policy,通过引入扩散模型的表达能力,克服了传统方法的局限性,可以表达任意分布并支持高维空间。实验结果表明,该方法在11个任务上均表现出明显的优越性和稳定性,相对于现有机器人学习方法,平均性能提高了46.9%,这一研究意义巨大。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(2):虽然本文提出了一种新的机器人视觉动作策略学习方法,并在实验中取得了良好的表现,但该方法的优化过程可能比较耗时。此外,该方法的性能受到多种因素的影响,包括演示的质量和数量、机器人的物理能力以及策略架构等,这些因素需在实际应用场景中加以考虑。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(3):如果让我来推荐,我会给这篇文章打9分。该篇文章提出的Diffusion Policy方法具有较高的可解释性、性能表现良好、实验结果稳定等优点,能够为机器人视觉动作策略学习等领域带来很大的启发与借鉴。唯一的不足可能是方法的优化过程需要投入更多的时间和精力。\u003c/p\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e使用技巧\u003c/h2\u003e\u003ca id=\"user-content-使用技巧\" class=\"anchor\" aria-label=\"Permalink: 使用技巧\" href=\"#使用技巧\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e查看使用技巧\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003cp dir=\"auto\"\u003e快速刷特定关键词的论文,不插图的话,每张篇文章需要花一分钟,阅读时间差不多一分钟。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e本项目可以用于跟踪领域最新论文,或者关注其他领域的论文,可以批量生成总结,最大可生成1000(如果你能等得及的话)。\n虽然Chat可能有瞎编的成分,但是在我的规范化提问的框架下,它的主要信息是保熟的。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e数字部分需要大家重新去原文检查!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e找到好的文章之后,可以精读这篇文章。\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e推荐另外两个精读论文的AI辅助网站:\u003ca href=\"https://typeset.io/\" rel=\"nofollow\"\u003ehttps://typeset.io/\u003c/a\u003e 和chatpdf。\n我的教程: \u003ca href=\"https://zhuanlan.zhihu.com/p/611874187\" rel=\"nofollow\"\u003e强化学徒:论文阅读神器SciSpace(Typeset.io)测评-和AI一起进化\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e和上面这两个工具的主要优势在于,ChatPaper可以批量自动总结最新论文,可以极大的降低阅读门槛,尤其是我们国人。\n缺点也很明显,ChatPaper没有交互功能,不能连续提问,但我觉得这个重要性不大~\u003c/p\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e常见报错\u003c/h2\u003e\u003ca id=\"user-content-常见报错\" class=\"anchor\" aria-label=\"Permalink: 常见报错\" href=\"#常见报错\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003e\u003cb\u003e查看常见报错\u003c/b\u003e\u003c/code\u003e\u003c/summary\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003epip 安装错误:\n\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224949301-5871610a-dd8e-4c44-b412-174ce593ad3d.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224949301-5871610a-dd8e-4c44-b412-174ce593ad3d.png\" alt=\"pip error\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e推荐关掉梯子,使用国内源下载:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com\"\u003e\u003cpre\u003epip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com\u003c/pre\u003e\u003c/div\u003e\n\u003col start=\"2\" dir=\"auto\"\u003e\n\u003cli\u003e调用openai的chatgpt api时出现APIConnectionError, 如何解决?\n参考知乎回答:\n\u003ca href=\"https://www.zhihu.com/question/587322263/answer/2919916984\" rel=\"nofollow\"\u003ehttps://www.zhihu.com/question/587322263/answer/2919916984\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e直接在chat_paper.py里加上\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eos.environ[\"http_proxy\"] = \"http://\u0026lt;代理ip\u0026gt;:\u0026lt;代理端口\u0026gt;\"\nos.environ[\"https_proxy\"] = \"http://\u0026lt;代理ip\u0026gt;:\u0026lt;代理端口\u0026gt;\"\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e代理ip和端口需要你在Windows系统里面查找。\u003c/p\u003e\n\u003cdiv dir=\"auto\"\u003e\n \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224496999-1a8a7946-00aa-4d51-9f18-45bdde4215b9.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224496999-1a8a7946-00aa-4d51-9f18-45bdde4215b9.png\" width=\"400\" height=\"300\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003col start=\"3\" dir=\"auto\"\u003e\n\u003cli\u003eAPI被OpenAI禁了的报错:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/224464704-80f9b010-14f8-4df0-9635-cdfcb2faea51.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/224464704-80f9b010-14f8-4df0-9635-cdfcb2faea51.png\" alt=\"3222\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e这种情况只能用新号了。另外一定要注意一个号尽量不要多刷,节点一定要靠谱,千万不能用大陆和香港的节点,用了就寄。\u003c/p\u003e\n\u003col start=\"4\" dir=\"auto\"\u003e\n\u003cli\u003eHttps通信错误:\n\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://user-images.githubusercontent.com/28528386/229026391-7cfacf76-e18c-4ae3-a8d5-b8736e8dd056.jpg\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/28528386/229026391-7cfacf76-e18c-4ae3-a8d5-b8736e8dd056.jpg\" alt=\"KBVVRL`KI560X~$27GLDQYI\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e这个报错大概率是节点不够干净。如果有大佬知道具体原因,欢迎挂issues\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://github.com/kaixindelele/ChatPaper/issues/174\" data-hovercard-type=\"issue\" data-hovercard-url=\"/kaixindelele/ChatPaper/issues/174/hovercard\"\u003eissue174\u003c/a\u003e提供的方案是:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pip install urllib3==1.25.11\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003epip\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003einstall\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eurllib3\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e==\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e1.25\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003e11\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e项目致谢\u003c/h2\u003e\u003ca id=\"user-content-项目致谢\" class=\"anchor\" aria-label=\"Permalink: 项目致谢\" href=\"#项目致谢\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e感谢实验室的支持和指导、群友和实验室同学的技术支持和大量转发!还有张老板和化老板的出谋划策。\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HouSiyuan2001\"\u003eSiyuan\u003c/a\u003e同学在我开始项目的时候,分享了两个核心函数,节省了很多时间。\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/WangRongsheng\"\u003erongsheng\u003c/a\u003e同学的在线网站,让这个项目可以使得更多的技术小白,可以尝试。\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lukasschwab/arxiv.py\"\u003eArxiv\u003c/a\u003e的作者提供的好用的arxiv论文下载包。\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF\"\u003ePyMuPDF\u003c/a\u003e提供良好的PDF解析工具。让整个信息流得以打通。\u003c/li\u003e\n\u003cli\u003eOpenAI提供了这么强的一个AI模型,让AI整个行业都活了起来,让学术“巴别塔”的构建有了基础。\u003c/li\u003e\n\u003cli\u003e感谢Ex-ChatGPT的作者分享的各种ChatGPT的开发细节,开发过程中学习良多,以及现在一直在开发我们的网页版内容。另外给计算机专业的佬们,推荐这款非常强大的开源工具:\u003c/li\u003e\n\u003cli\u003e感谢ChatReviewer的作者将他的项目合并到我们的ChatPaper中,使得ChatPaper更加完整。\n\u003ca href=\"https://github.com/circlestarzero/EX-chatGPT\"\u003eEx-ChatGPT\u003c/a\u003e 是一个强大的工具平台,能让 ChatGPT 能够调用外部 API,例如 WolframAlpha、Google 和 WikiMedia,以提供更准确和及时的答案。\n江湖人称 GoogleChat.\u003c/li\u003e\n\u003cli\u003e还得感谢GitHub官方,帮我们这个项目列入了\u003ca href=\"https://github.com/trending\"\u003e热榜第五\u003c/a\u003e,获得了大量的关注!\u003c/li\u003e\n\u003cli\u003e后面我们整个项目流程打通,需要感谢同样是中科院的同学们开发的\u003ca href=\"https://github.com/binary-husky/gpt_academic\"\u003egpt_academic\u003c/a\u003e,我们在他们的基础上做了润色部分。以及\u003ca href=\"https://github.com/nishiwen1214\"\u003enishiwen1214\u003c/a\u003e的\u003ca href=\"https://github.com/nishiwen1214/ChatReviewer\"\u003eChatReviewer\u003c/a\u003e,补齐了我们的审稿和审稿回复。\u003c/li\u003e\n\u003cli\u003e感谢\u003ca href=\"https://github.com/SilenceEagle/paper_downloader\"\u003eSilenceEagle\u003c/a\u003e提供的CCF-A的论文数据库,我们已经离线总结了3w+的论文了。\u003c/li\u003e\n\u003cli\u003e感谢里屋社区的开源和整理中文数据集\u003ca href=\"https://github.com/esbatmop/MNBVC\"\u003eMNBVC\u003c/a\u003e,希望国产中文大模型早日起飞!\u003c/li\u003e\n\u003cli\u003e感谢一路以来,所有对项目支持和本人提供帮助的朋友和老师!\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStarchart\u003c/h2\u003e\u003ca id=\"user-content-starchart\" class=\"anchor\" aria-label=\"Permalink: Starchart\" href=\"#starchart\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://star-history.com/#kaixindelele/ChatPaper\u0026amp;Date\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/78a20b74712aae2b2dda93262c42cf100ab96f7a908d19770225cb0b48ddb944/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d6b616978696e64656c656c652f43686174506170657226747970653d44617465\" alt=\"Star History Chart\" data-canonical-src=\"https://api.star-history.com/svg?repos=kaixindelele/ChatPaper\u0026amp;type=Date\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContributors\u003c/h2\u003e\u003ca id=\"user-content-contributors\" class=\"anchor\" aria-label=\"Permalink: Contributors\" href=\"#contributors\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003ca href=\"https://github.com/kaixindelele/ChatPaper/graphs/contributors\"\u003e\n \u003cimg src=\"https://camo.githubusercontent.com/6b42d37bc8daf13703a726cbe192267cc5cbcc2893dd60a5e1560d0241bebdef/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6b616978696e64656c656c652f436861745061706572\" data-canonical-src=\"https://contrib.rocks/image?repo=kaixindelele/ChatPaper\" style=\"max-width: 100%;\"\u003e\n\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e项目引用:\u003c/h2\u003e\u003ca id=\"user-content-项目引用\" class=\"anchor\" aria-label=\"Permalink: 项目引用:\" href=\"#项目引用\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePlease cite the repo if you use the data or code in this repo.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"@misc{ChatPaper,\n author={Yongle Luo, Rongsheng Wang, Peter Gam, Jiaxi Cui, circlestarzero, Shiwen Ni, Jaseon Quanta, Qingxu Fu, Siyuan Hou},\n title = {ChatPaper: Use LLM to summarize papers.},\n year = {2023},\n publisher = {GitHub},\n journal = {GitHub repository},\n howpublished = {\\url{https://github.com/kaixindelele/ChatPaper}},\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e@misc{ChatPaper,\n author={Yongle Luo, Rongsheng Wang, Peter Gam, Jiaxi Cui, circlestarzero, Shiwen Ni, Jaseon Quanta, Qingxu Fu, Siyuan Hou},\n title = {ChatPaper: Use LLM to summarize papers.},\n year = {2023},\n publisher = {GitHub},\n journal = {GitHub repository},\n howpublished = {\\url{https://github.com/kaixindelele/ChatPaper}},\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"ChatPaper","anchor":"chatpaper","htmlText":"ChatPaper"},{"level":3,"text":"希望让语言不再成为中国人获取最新知识的障碍","anchor":"希望让语言不再成为中国人获取最新知识的障碍","htmlText":"希望让语言不再成为中国人获取最新知识的障碍"},{"level":1,"text":"ChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复","anchor":"chatpaper全流程加速科研论文总结专业级翻译润色审稿审稿回复","htmlText":"ChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复"},{"level":2,"text":"目录:","anchor":"目录","htmlText":"目录:"},{"level":2,"text":"最新讯息","anchor":"最新讯息","htmlText":"最新讯息"},{"level":2,"text":"开发动机","anchor":"开发动机","htmlText":"开发动机"},{"level":2,"text":"技术原理:","anchor":"技术原理","htmlText":"技术原理:"},{"level":2,"text":"配置教程","anchor":"配置教程","htmlText":"配置教程"},{"level":3,"text":"一、以脚本方式运行","anchor":"一以脚本方式运行","htmlText":"一、以脚本方式运行"},{"level":3,"text":"二、 以Flask服务运行","anchor":"二-以flask服务运行","htmlText":"二、 以Flask服务运行"},{"level":3,"text":"三、以docker形式运行","anchor":"三以docker形式运行","htmlText":"三、以docker形式运行"},{"level":2,"text":"HuggingFace在线部署","anchor":"huggingface在线部署","htmlText":"HuggingFace在线部署"},{"level":2,"text":"任意PDF全文翻译配置教程","anchor":"任意pdf全文翻译配置教程","htmlText":"任意PDF全文翻译配置教程"},{"level":2,"text":"本地PDF全文翻译示例","anchor":"本地pdf全文翻译示例","htmlText":"本地PDF全文翻译示例"},{"level":1,"text":"强化学习、机器人学和模拟到真实世界的迁移","anchor":"强化学习机器人学和模拟到真实世界的迁移","htmlText":"强化学习、机器人学和模拟到真实世界的迁移"},{"level":2,"text":"Reinforcement Learning, Robotics, Sim-to-Real Transfer","anchor":"reinforcement-learning-robotics-sim-to-real-transfer","htmlText":"Reinforcement Learning, Robotics, Sim-to-Real Transfer"},{"level":2,"text":"摘要","anchor":"摘要","htmlText":"摘要"},{"level":2,"text":"\"好机器人!\": 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)","anchor":"好机器人-用于多步骤视觉任务的高效强化学习与模拟到实际转移good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer","htmlText":"\"好机器人!\": 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)"},{"level":2,"text":"II. 相关工作","anchor":"ii-相关工作","htmlText":"II. 相关工作"},{"level":2,"text":"III. 方法","anchor":"iii-方法","htmlText":"III. 方法"},{"level":2,"text":"A. 奖励塑造","anchor":"a-奖励塑造","htmlText":"A. 奖励塑造"},{"level":2,"text":"B. 情境移除:SPOT试验奖励","anchor":"b-情境移除spot试验奖励","htmlText":"B. 情境移除:SPOT试验奖励"},{"level":2,"text":"C. SPOT-Q学习和动态行动空间","anchor":"c-spot-q学习和动态行动空间","htmlText":"C. SPOT-Q学习和动态行动空间"},{"level":2,"text":"IV. 模拟实验","anchor":"iv-模拟实验","htmlText":"IV. 模拟实验"},{"level":2,"text":"A. 机器人实现细节","anchor":"a-机器人实现细节","htmlText":"A. 机器人实现细节"},{"level":2,"text":"B. 评估指标","anchor":"b-评估指标","htmlText":"B. 评估指标"},{"level":2,"text":"C. 算法剖析","anchor":"c-算法剖析","htmlText":"C. 算法剖析"},{"level":2,"text":"D. 安全性和领域泛化","anchor":"d-安全性和领域泛化","htmlText":"D. 安全性和领域泛化"},{"level":2,"text":"V. REAL WORLD EXPERIMENTS (真实世界实验)","anchor":"v-real-world-experiments-真实世界实验","htmlText":"V. REAL WORLD EXPERIMENTS (真实世界实验)"},{"level":2,"text":"模拟到真实环境与真实环境堆叠比较","anchor":"模拟到真实环境与真实环境堆叠比较","htmlText":"模拟到真实环境与真实环境堆叠比较"},{"level":2,"text":"VI. 结论","anchor":"vi-结论","htmlText":"VI. 结论"},{"level":2,"text":"致谢","anchor":"致谢","htmlText":"致谢"},{"level":2,"text":"本地PDF全文总结示例","anchor":"本地pdf全文总结示例","htmlText":"本地PDF全文总结示例"},{"level":1,"text":"强化学习用于长期任务的学习","anchor":"强化学习用于长期任务的学习","htmlText":"强化学习用于长期任务的学习"},{"level":2,"text":"Reinforcement learning for long-horizon tasks","anchor":"reinforcement-learning-for-long-horizon-tasks","htmlText":"Reinforcement learning for long-horizon tasks"},{"level":2,"text":"Abstract (摘要)","anchor":"abstract-摘要","htmlText":"Abstract (摘要)"},{"level":2,"text":"\"Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer","anchor":"good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer","htmlText":"\"Good Robot!\": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer"},{"level":2,"text":"II. RELATED WORK (相关工作)","anchor":"ii-related-work-相关工作","htmlText":"II. RELATED WORK (相关工作)"},{"level":2,"text":"III. APPROACH (方法)","anchor":"iii-approach-方法","htmlText":"III. APPROACH (方法)"},{"level":2,"text":"A. Reward Shaping (奖励塑造)","anchor":"a-reward-shaping-奖励塑造","htmlText":"A. Reward Shaping (奖励塑造)"},{"level":2,"text":"B. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)","anchor":"b-situation-removal-spot-trial-reward-情境移除spot试验奖励","htmlText":"B. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)"},{"level":2,"text":"C. SPOT-Q学习和动态行动空间","anchor":"c-spot-q学习和动态行动空间-1","htmlText":"C. SPOT-Q学习和动态行动空间"},{"level":2,"text":"IV. SIMULATION EXPERIMENTS","anchor":"iv-simulation-experiments","htmlText":"IV. SIMULATION EXPERIMENTS"},{"level":2,"text":"A. Robot Implementation Details (机器人实施细节)","anchor":"a-robot-implementation-details-机器人实施细节","htmlText":"A. Robot Implementation Details (机器人实施细节)"},{"level":2,"text":"B. Evaluation Metrics (评估指标)","anchor":"b-evaluation-metrics-评估指标","htmlText":"B. Evaluation Metrics (评估指标)"},{"level":2,"text":"C. 算法剖析","anchor":"c-算法剖析-1","htmlText":"C. 算法剖析"},{"level":2,"text":"全文总结示例","anchor":"全文总结示例","htmlText":"全文总结示例"},{"level":2,"text":"Paper:1","anchor":"paper1","htmlText":"Paper:1"},{"level":2,"text":"使用技巧","anchor":"使用技巧","htmlText":"使用技巧"},{"level":2,"text":"常见报错","anchor":"常见报错","htmlText":"常见报错"},{"level":2,"text":"项目致谢","anchor":"项目致谢","htmlText":"项目致谢"},{"level":2,"text":"Starchart","anchor":"starchart","htmlText":"Starchart"},{"level":2,"text":"Contributors","anchor":"contributors","htmlText":"Contributors"},{"level":2,"text":"项目引用:","anchor":"项目引用","htmlText":"项目引用:"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper"}},{"displayName":"LICENSE.md","repoName":"ChatPaper","refName":"main","path":"LICENSE.md","preferredFileType":"license","tabName":"License","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-96e76d5fdb2c.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"overview_shared_code_dropdown_button":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}}</script> <div data-target="react-partial.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.iVEunk{margin-top:16px;margin-bottom:16px;}/*!sc*/ .jzuOtQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/ .bGojzy{margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;row-gap:16px;}/*!sc*/ .iNSVHo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-bottom:16px;padding-top:8px;}/*!sc*/ .bVgnfw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:8px;}/*!sc*/ @media screen and (max-width:320px){.bVgnfw{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .CEgMp{position:relative;}/*!sc*/ @media screen and (max-width:380px){.CEgMp .ref-selector-button-text-container{max-width:80px;}}/*!sc*/ @media screen and (max-width:320px){.CEgMp{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.CEgMp .overview-ref-selector{width:100%;}.CEgMp .overview-ref-selector > span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}.CEgMp .overview-ref-selector > span > span[data-component="text"]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .gMOVLe[data-size="medium"]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;}/*!sc*/ .gMOVLe[data-size="medium"] svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gMOVLe[data-size="medium"] > span{width:inherit;}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .bZBlpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/ .lhTYNA{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ffLUq{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .bmcJak{min-width:0;}/*!sc*/ .fLXEGX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1079px){.fLXEGX{display:none;}}/*!sc*/ .lmSMZJ[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:4px;padding-right:4px;}/*!sc*/ .lmSMZJ[data-size="medium"] span[data-component="leadingVisual"]{margin-right:4px !important;}/*!sc*/ .dqfxud{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1080px){.dqfxud{display:none;}}/*!sc*/ @media screen and (max-width:543px){.dqfxud{display:none;}}/*!sc*/ .fGwBZA[data-size="medium"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jxTzTd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;gap:8px;}/*!sc*/ .gqqBXN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;}/*!sc*/ @media screen and (max-width:543px){.gqqBXN{display:none;}}/*!sc*/ .dzXgxt{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1011px){.dzXgxt{display:none;}}/*!sc*/ .iWFGlI{margin-left:8px;margin-right:8px;margin:0;}/*!sc*/ .vcvyP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .YUPas{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1012px){.YUPas{display:none;}}/*!sc*/ .izFOf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:544px){.izFOf{display:none;}}/*!sc*/ .vIPPs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}/*!sc*/ .fdROMU{width:100%;border-collapse:separate;border-spacing:0;border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;table-layout:fixed;overflow:unset;}/*!sc*/ .jGKpsv{height:0px;line-height:0px;}/*!sc*/ .jGKpsv tr{height:0px;font-size:0px;}/*!sc*/ .jdgHnn{padding:16px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;text-align:left;height:40px;}/*!sc*/ .jdgHnn th{padding-left:16px;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));}/*!sc*/ .bQivRW{width:100%;border-top-left-radius:6px;}/*!sc*/ @media screen and (min-width:544px){.bQivRW{display:none;}}/*!sc*/ .ldkMIO{width:40%;border-top-left-radius:6px;}/*!sc*/ @media screen and (max-width:543px){.ldkMIO{display:none;}}/*!sc*/ .jMbWeI{text-align:right;padding-right:16px;width:136px;border-top-right-radius:6px;}/*!sc*/ .gpqjiB{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;height:40px;}/*!sc*/ .dzCJzi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:273px;padding:8px;}/*!sc*/ @media screen and (min-width:544px){.dzCJzi{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .eNCcrz{text-align:center;vertical-align:center;height:40px;border-top:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));}/*!sc*/ .bHTcCe{border-top:1px solid var(--borderColor-default,var(--color-border-default));cursor:pointer;}/*!sc*/ .csrIcr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;gap:16px;}/*!sc*/ .bUQNHB{border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}/*!sc*/ @media screen and (max-width:543px){.bUQNHB{margin-left:-16px;margin-right:-16px;max-width:calc(100% + 32px);}}/*!sc*/ @media screen and (min-width:544px){.bUQNHB{max-width:100%;}}/*!sc*/ .jPdcfu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid;border-bottom-color:var(--borderColor-default,var(--color-border-default,#d0d7de));-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:8px;position:-webkit-sticky;position:sticky;top:0;background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));z-index:1;border-top-left-radius:6px;border-top-right-radius:6px;}/*!sc*/ .iphEWz{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-bottom:none;max-width:100%;padding-left:8px;padding-right:8px;}/*!sc*/ .hUCRAk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .cwoBXV[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-subtle,#6e7781));padding-left:8px;padding-right:8px;}/*!sc*/ .QkQOb{padding:32px;overflow:auto;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"iVEunk,jzuOtQ,bGojzy,iNSVHo,bVgnfw,CEgMp,gMOVLe,gUkoLg,bZBlpz,lhTYNA,ffLUq,bmcJak,fLXEGX,lmSMZJ,dqfxud,fGwBZA,jxTzTd,gqqBXN,dzXgxt,iWFGlI,vcvyP,YUPas,izFOf,vIPPs,fdROMU,jGKpsv,jdgHnn,bQivRW,ldkMIO,jMbWeI,gpqjiB,dzCJzi,eNCcrz,bHTcCe,csrIcr,bUQNHB,jPdcfu,iphEWz,hUCRAk,cwoBXV,QkQOb,"}/*!sc*/ .brGdpi{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}/*!sc*/ data-styled.g5[id="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0"]{content:"brGdpi,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g16[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .liVpTx{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;}/*!sc*/ data-styled.g18[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"liVpTx,"}/*!sc*/ </style> <!-- --> <!-- --> <div class="Box-sc-g0xbh4-0 iVEunk"><div class="Box-sc-g0xbh4-0 jzuOtQ"><div class="Box-sc-g0xbh4-0 bGojzy"></div></div><div class="Box-sc-g0xbh4-0 iNSVHo"><div class="Box-sc-g0xbh4-0 bVgnfw"><div class="Box-sc-g0xbh4-0 CEgMp"><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="main branch" data-testid="anchor-button" class="Box-sc-g0xbh4-0 gMOVLe prc-Button-ButtonBase-c50BI overview-ref-selector width-full" data-loading="false" data-size="medium" data-variant="default" aria-describedby="branch-picker-repos-header-ref-selector-loading-announcement" id="branch-picker-repos-header-ref-selector"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 bZBlpz"><div class="Box-sc-g0xbh4-0 lhTYNA"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 ffLUq ref-selector-button-text-container"><span class="Box-sc-g0xbh4-0 bmcJak prc-Text-Text-0ima0"> <!-- -->main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><button hidden="" data-hotkey-scope="read-only-cursor-text-area"></button></div><div class="Box-sc-g0xbh4-0 fLXEGX"><a style="--button-color:fg.muted" type="button" href="/kaixindelele/ChatPaper/branches" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rclab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Branches</span></span></a><a style="--button-color:fg.muted" type="button" href="/kaixindelele/ChatPaper/tags" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rklab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Tags</span></span></a></div><div class="Box-sc-g0xbh4-0 dqfxud"><a style="--button-color:fg.muted" type="button" aria-label="Go to Branches page" href="/kaixindelele/ChatPaper/branches" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Relab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></a><a style="--button-color:fg.muted" type="button" aria-label="Go to Tags page" href="/kaixindelele/ChatPaper/tags" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Rmlab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></a></div></div><div class="Box-sc-g0xbh4-0 jxTzTd"><div class="Box-sc-g0xbh4-0 gqqBXN"><div class="Box-sc-g0xbh4-0 dzXgxt"><!--$--><div class="Box-sc-g0xbh4-0 iWFGlI"><span class="Box-sc-g0xbh4-0 vcvyP TextInput-wrapper prc-components-TextInputWrapper-i1ofR prc-components-TextInputBaseWrapper-ueK9q" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id=":R2j5ab:" aria-hidden="true"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellcheck="false" placeholder="Go to file" aria-describedby=":R2j5ab: :R2j5abH1:" data-component="input" class="prc-components-Input-Ic-y8" value=""/><span class="TextInput-icon" id=":R2j5abH1:" aria-hidden="true"></span></span></div><!--/$--></div><div class="Box-sc-g0xbh4-0 YUPas"><button type="button" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":Rr5ab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Go to file</span></span></button></div><div class="react-directory-add-file-icon"></div><div class="react-directory-remove-file-icon"></div></div><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="primary" aria-describedby=":R55ab:-loading-announcement" id=":R55ab:"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-code hide-sm" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Code</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="Box-sc-g0xbh4-0 izFOf"><button data-component="IconButton" type="button" aria-label="Open more actions menu" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R75ab:-loading-announcement" id=":R75ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div></div></div><div class="Box-sc-g0xbh4-0 vIPPs"><div data-hpc="true"><button hidden="" data-testid="focus-next-element-button" data-hotkey="j"></button><button hidden="" data-testid="focus-previous-element-button" data-hotkey="k"></button><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading" id="folders-and-files">Folders and files</h2><table aria-labelledby="folders-and-files" class="Box-sc-g0xbh4-0 fdROMU"><thead class="Box-sc-g0xbh4-0 jGKpsv"><tr class="Box-sc-g0xbh4-0 jdgHnn"><th colSpan="2" class="Box-sc-g0xbh4-0 bQivRW"><span class="text-bold">Name</span></th><th colSpan="1" class="Box-sc-g0xbh4-0 ldkMIO"><span class="text-bold">Name</span></th><th class="hide-sm"><div title="Last commit message" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit message</span></div></th><th colSpan="1" class="Box-sc-g0xbh4-0 jMbWeI"><div title="Last commit date" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit date</span></div></th></tr></thead><tbody><tr class="Box-sc-g0xbh4-0 gpqjiB"><td colSpan="3" class="bgColor-muted p-1 rounded-top-2"><div class="Box-sc-g0xbh4-0 dzCJzi"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">History</h2><a href="/kaixindelele/ChatPaper/commits/main/" class="prc-Button-ButtonBase-c50BI d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":Raqj8pab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x"><span class="fgColor-default">346 Commits</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><span role="tooltip" aria-label="346 Commits" id="history-icon-button-tooltip" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-n"><a href="/kaixindelele/ChatPaper/commits/main/" class="prc-Button-ButtonBase-c50BI LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":R1iqj8pab:-loading-announcement history-icon-button-tooltip"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a></span></div></div></div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-0"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-submodule icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 2.75C0 1.784.784 1 1.75 1H5c.55 0 1.07.26 1.4.7l.9 1.2a.25.25 0 0 0 .2.1h6.75c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 15H1.75A1.75 1.75 0 0 1 0 13.25Zm9.42 9.36 2.883-2.677a.25.25 0 0 0 0-.366L9.42 6.39a.249.249 0 0 0-.42.183V8.5H4.75a.75.75 0 0 0 0 1.5H9v1.927c0 .218.26.331.42.183Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="ChatPaper2Xmind" aria-label="ChatPaper2Xmind, (Submodule)" class="Link--primary" href="/MasterYip/ChatPaper2Xmind/tree/1dbe3b9ea01adbad9dfdf548fea9928813932777"><span style="color:var(--fgColor-accent, var(--color-accent-fg))">ChatPaper2Xmind @ 1dbe3b9</span></a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-submodule icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 2.75C0 1.784.784 1 1.75 1H5c.55 0 1.07.26 1.4.7l.9 1.2a.25.25 0 0 0 .2.1h6.75c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 15H1.75A1.75 1.75 0 0 1 0 13.25Zm9.42 9.36 2.883-2.677a.25.25 0 0 0 0-.366L9.42 6.39a.249.249 0 0 0-.42.183V8.5H4.75a.75.75 0 0 0 0 1.5H9v1.927c0 .218.26.331.42.183Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="ChatPaper2Xmind" aria-label="ChatPaper2Xmind, (Submodule)" class="Link--primary" href="/MasterYip/ChatPaper2Xmind/tree/1dbe3b9ea01adbad9dfdf548fea9928813932777"><span style="color:var(--fgColor-accent, var(--color-accent-fg))">ChatPaper2Xmind @ 1dbe3b9</span></a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-1"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="ChatReviewerAndResponse" aria-label="ChatReviewerAndResponse, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/ChatReviewerAndResponse">ChatReviewerAndResponse</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="ChatReviewerAndResponse" aria-label="ChatReviewerAndResponse, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/ChatReviewerAndResponse">ChatReviewerAndResponse</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-2"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="HuggingFaceDeploy" aria-label="HuggingFaceDeploy, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/HuggingFaceDeploy">HuggingFaceDeploy</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="HuggingFaceDeploy" aria-label="HuggingFaceDeploy, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/HuggingFaceDeploy">HuggingFaceDeploy</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-3"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="auto_survey" aria-label="auto_survey, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/auto_survey">auto_survey</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="auto_survey" aria-label="auto_survey, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/auto_survey">auto_survey</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-4"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="docker" aria-label="docker, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/docker">docker</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="docker" aria-label="docker, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/docker">docker</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-5"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="images" aria-label="images, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/images">images</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="images" aria-label="images, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/images">images</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-6"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="others" aria-label="others, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/others">others</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="others" aria-label="others, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/others">others</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-7"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="scipdf_parser-master" aria-label="scipdf_parser-master, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/scipdf_parser-master">scipdf_parser-master</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="scipdf_parser-master" aria-label="scipdf_parser-master, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/scipdf_parser-master">scipdf_parser-master</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-8"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="source" aria-label="source, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/source">source</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="source" aria-label="source, (Directory)" class="Link--primary" href="/kaixindelele/ChatPaper/tree/main/source">source</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-9"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.gitignore">.gitignore</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.gitignore">.gitignore</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-10"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitmodules" aria-label=".gitmodules, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.gitmodules">.gitmodules</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitmodules" aria-label=".gitmodules, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.gitmodules">.gitmodules</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-11"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".readthedocs.yaml" aria-label=".readthedocs.yaml, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.readthedocs.yaml">.readthedocs.yaml</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".readthedocs.yaml" aria-label=".readthedocs.yaml, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/.readthedocs.yaml">.readthedocs.yaml</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-12"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="Dockerfile" aria-label="Dockerfile, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/Dockerfile">Dockerfile</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="Dockerfile" aria-label="Dockerfile, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/Dockerfile">Dockerfile</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-13"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE.md" aria-label="LICENSE.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/LICENSE.md">LICENSE.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE.md" aria-label="LICENSE.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/LICENSE.md">LICENSE.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-14"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-15"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="apikey.ini" aria-label="apikey.ini, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/apikey.ini">apikey.ini</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="apikey.ini" aria-label="apikey.ini, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/apikey.ini">apikey.ini</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-16"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_arxiv.py" aria-label="chat_arxiv.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_arxiv.py">chat_arxiv.py</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_arxiv.py" aria-label="chat_arxiv.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_arxiv.py">chat_arxiv.py</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-17"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_paper.py" aria-label="chat_paper.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_paper.py">chat_paper.py</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_paper.py" aria-label="chat_paper.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_paper.py">chat_paper.py</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-18"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_translate.py" aria-label="chat_translate.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_translate.py">chat_translate.py</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="chat_translate.py" aria-label="chat_translate.py, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/chat_translate.py">chat_translate.py</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-19"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="demo.pdf" aria-label="demo.pdf, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/demo.pdf">demo.pdf</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="demo.pdf" aria-label="demo.pdf, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/demo.pdf">demo.pdf</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-20"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="readme_en.md" aria-label="readme_en.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/readme_en.md">readme_en.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="readme_en.md" aria-label="readme_en.md, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/readme_en.md">readme_en.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-21"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="requirements.txt" aria-label="requirements.txt, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/requirements.txt">requirements.txt</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="requirements.txt" aria-label="requirements.txt, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/requirements.txt">requirements.txt</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-22"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="start.sh" aria-label="start.sh, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/start.sh">start.sh</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="start.sh" aria-label="start.sh, (File)" class="Link--primary" href="/kaixindelele/ChatPaper/blob/main/start.sh">start.sh</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="Box-sc-g0xbh4-0 eNCcrz show-for-mobile" data-testid="view-all-files-row"><td colSpan="3" class="Box-sc-g0xbh4-0 bHTcCe"><div><button class="prc-Link-Link-85e08">View all files</button></div></td></tr></tbody></table></div><div class="Box-sc-g0xbh4-0 csrIcr"><div class="Box-sc-g0xbh4-0 bUQNHB"><div itemscope="" itemType="https://schema.org/abstract" class="Box-sc-g0xbh4-0 jPdcfu"><h2 class="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0 brGdpi">Repository files navigation</h2><nav class="Box-sc-g0xbh4-0 iphEWz prc-components-UnderlineWrapper-oOh5J" aria-label="Repository files"><ul class="prc-components-UnderlineItemList-b23Hf" role="list"><li class="Box-sc-g0xbh4-0 hUCRAk"><a class="prc-components-UnderlineItem-lJsg-" href="#" aria-current="page"><span data-component="icon"><svg aria-hidden="true" focusable="false" class="octicon octicon-book" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg></span><span data-component="text" data-content="README">README</span></a></li><li class="Box-sc-g0xbh4-0 hUCRAk"><a class="prc-components-UnderlineItem-lJsg-" href="#"><span data-component="icon"><svg aria-hidden="true" focusable="false" class="octicon octicon-law" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg></span><span data-component="text" data-content="License">License</span></a></li></ul></nav><button style="--button-color:fg.subtle" type="button" aria-label="Outline" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 cwoBXV prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rr9ab:-loading-announcement" id=":Rr9ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button></div><div class="Box-sc-g0xbh4-0 QkQOb js-snippet-clipboard-copy-unpositioned undefined" data-hpc="true"><article class="markdown-body entry-content container-lg" itemprop="text"><div dir="auto"> <a href="/kaixindelele/ChatPaper/blob/main/README.md">中文</a> | <a href="/kaixindelele/ChatPaper/blob/main/readme_en.md">English</a> </div> <br> <p dir="auto">💥💥💥<strong>7.23 <a href="https://github.com/MasterYip">MasterYip</a> 同学开源了 <a href="https://github.com/MasterYip/ChatPaper2Xmind">ChatPaper2Xmind</a>! 将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记。 </strong></p> <p dir="auto">💥💥💥<strong>7.22 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。 增加全新的本地PDF全文翻译功能!<a href="https://github.com/kaixindelele/ChatPaper#%E4%BB%BB%E6%84%8Fpdf%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B">⛏️PDF全文翻译配置教程</a> </strong></p> <details><summary><code><b>历史重大更新</b></code></summary> <ul dir="auto"> <li>🌟<em>2023.07.23</em>: <a href="https://github.com/MasterYip">MasterYip</a> 同学开源了 <a href="https://github.com/MasterYip/ChatPaper2Xmind">ChatPaper2Xmind</a>! 将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记。</li> <li>🌟<em>2023.07.22</em>: 增加全新的本地PDF全文翻译功能!<a href="#%E4%BB%BB%E6%84%8FPDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B">⛏️PDF全文翻译配置教程</a></li> <li>🌟<em>2023.07.21</em>: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。</li> <li>🌟<em>2023.07.09</em>: 师弟<a href="https://github.com/red-tie">red-tie</a>在<a href="https://github.com/CCCBora/auto-draft">auto-draft</a>的基础上,优化了一款<a href="https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey">一键文献综述</a>的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!</li> <li>🌟<em>2023.07.05</em>: 昨天我做了一个新的小玩具:<a href="https://github.com/kaixindelele/ChatSensitiveWords">ChatSensitiveWords</a>,利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。</li> <li>🌟<em>2023.04.30</em>: <strong>唯一官方网站:</strong><a href="https://chatpaper.org/" rel="nofollow">https://chatpaper.org/</a> ,以及小白教程【ChatPaper网页版使用小白教程-哔哩哔哩】 <a href="https://b23.tv/HpDkcBU%EF%BC%8C" rel="nofollow">https://b23.tv/HpDkcBU,</a> 第三方文档:<a href="https://chatpaper.readthedocs.io" rel="nofollow">https://chatpaper.readthedocs.io</a> .</li> <li>🌟<em>2023.04.22</em>: 为了庆祝ChatPaper获得一万⭐,我们将联合两位同学,推出两个AI辅助文献总结工具,第一个是<a href="https://github.com/CCCBora/auto-draft">auto-draft</a>,AI自动搜集整理出文献总结!</li> <li>🌟<em>2023.04.17</em>: 为了降低学术伦理风险,我们为Chat_Reviewer增加了复杂的文字注入,效果如图:<a href="https://github.com/kaixindelele/ChatPaper/blob/main/images/reviews.jpg">示例图</a> ,希望各位老师同学在使用的时候,一定要注意学术伦理和学术声誉,不要滥用工具。如果谁有更好的方法来限制少数人的不规范使用,欢迎留言,为科研界做一份贡献。</li> <li>🌟<em>2023.03.31</em>: 目前已经离线总结了3w+的CCF-A会议论文了,以后大家可以不用等那么久了!</li> <li>🌟<em>2023.03.28</em>: 荣胜同学今天发布了一个非常有意思的工作<a href="https://github.com/WangRongsheng/ChatGenTitle">ChatGenTitle</a>,提供摘要生成标题,基于220wArXiv论文的数据微调的结果!</li> <li>🌟<em>2023.03.23</em>: chat_arxiv.py可以从arxiv网站,根据关键词,最近几天,几篇论文,直接爬取最新的领域论文了!解决了之前arxiv包的搜索不准确问题!</li> <li>🌟<em>2023.03.23</em>: ChatPaper终于成为完成体了!现在已经有论文总结+论文润色+论文分析与改进建议+论文审稿回复等功能了!</li> </ul> </details> <div class="markdown-heading" dir="auto"><h1 align="center" tabindex="-1" class="heading-element" dir="auto">ChatPaper</h1><a id="user-content-chatpaper" class="anchor" aria-label="Permalink: ChatPaper" href="#chatpaper"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div align="center" dir="auto"> <a href="https://github.com/kaixindelele/ChatPaper"> <img src="https://github.com/kaixindelele/ChatPaper/raw/main/images/homeLogo.jpg" width="25%" style="max-width: 100%;"> </a> <p align="center" dir="auto"> </p><div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">希望让语言不再成为中国人获取最新知识的障碍</h3><a id="user-content-希望让语言不再成为中国人获取最新知识的障碍" class="anchor" aria-label="Permalink: 希望让语言不再成为中国人获取最新知识的障碍" href="#希望让语言不再成为中国人获取最新知识的障碍"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <a href="https://github.com/kaixindelele/ChatPaper/graphs/contributors"> <img alt="GitHub Contributors" src="https://camo.githubusercontent.com/dc83d6fc4888180a00d2ce7a1b90fcea90c6385b7bfe99259ddf85260a2152c0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6b616978696e64656c656c652f436861745061706572" data-canonical-src="https://img.shields.io/github/contributors/kaixindelele/ChatPaper" style="max-width: 100%;"> </a> <a href="https://github.com/kaixindelele/ChatPaper/issues"> <img alt="Issues" src="https://camo.githubusercontent.com/395edfdd1973f80e4b4a13ae05f55e43a2a0aac40c25b55055eae9f48643335d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d303038386666" data-canonical-src="https://img.shields.io/github/issues/kaixindelele/ChatPaper?color=0088ff" style="max-width: 100%;"> </a> <a href="https://github.com/kaixindelele/ChatPaper/pulls"> <img alt="GitHub pull requests" src="https://camo.githubusercontent.com/e0609e95e3977cec9d316a805ebee3c8ad07cb5309c9c92dfea46400ddb19060/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d303038386666" data-canonical-src="https://img.shields.io/github/issues-pr/kaixindelele/ChatPaper?color=0088ff" style="max-width: 100%;"> </a><a href="https://github.com/kaixindelele/ChatPaper/stargazers"> <img alt="GitHub stars" src="https://camo.githubusercontent.com/38e0c6fa9874fccae640e036fce337bf3fc460d9f229088d59303f7a5ab55440/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6b616978696e64656c656c652f4368617450617065723f636f6c6f723d636366" data-canonical-src="https://img.shields.io/github/stars/kaixindelele/ChatPaper?color=ccf" style="max-width: 100%;"> </a> <br> <em>一站式服务 / 简单 / 快速 / 高效 </em> <br> <a href="https://www.bilibili.com/video/BV1EM411x7Tr/" rel="nofollow"><strong>视频教程</strong></a> · <a href="https://chatpaper.org/" rel="nofollow"><strong>在线体验</strong></a> <p dir="auto"></p> <p dir="auto"></p> </div> <div class="markdown-heading" dir="auto"><h1 align="center" tabindex="-1" class="heading-element" dir="auto">ChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复</h1><a id="user-content-chatpaper全流程加速科研论文总结专业级翻译润色审稿审稿回复" class="anchor" aria-label="Permalink: ChatPaper全流程加速科研:论文总结+专业级翻译+润色+审稿+审稿回复" href="#chatpaper全流程加速科研论文总结专业级翻译润色审稿审稿回复"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <markdown-accessiblity-table><table> <thead> <tr> <th align="left">工具名称</th> <th align="left">工具作用</th> <th align="left">是否在线?</th> <th align="left">在线预览</th> <th align="left">备注</th> </tr> </thead> <tbody> <tr> <td align="left">ChatPaper</td> <td align="left">通过ChatGPT实现对<strong>论文进行总结,帮助科研人进行论文初筛</strong></td> <td align="left">访问<a href="https://chatpaper.org/" rel="nofollow">chatpaper.org</a> 使用</td> <td align="left"><a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/28528386/252517119-ceda14e8-7330-40d2-859e-0d39d99a2dfb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTcxMTktY2VkYTE0ZTgtNzMzMC00MGQyLTg1OWUtMGQzOWQ5OWEyZGZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZWUzYjFmN2E4ZTJmN2Y1MjM2YzRiZjE0MDM2M2JlOTM4ZjA1MDA1ZWM2MTBlNjgxOGRkMmZkZGViN2QyNGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LFVvjyEHwkJQGxeS3vseoAzS-_fI_BJ5IWTyu41w5yo"><img src="https://private-user-images.githubusercontent.com/28528386/252517119-ceda14e8-7330-40d2-859e-0d39d99a2dfb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTcxMTktY2VkYTE0ZTgtNzMzMC00MGQyLTg1OWUtMGQzOWQ5OWEyZGZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZWUzYjFmN2E4ZTJmN2Y1MjM2YzRiZjE0MDM2M2JlOTM4ZjA1MDA1ZWM2MTBlNjgxOGRkMmZkZGViN2QyNGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LFVvjyEHwkJQGxeS3vseoAzS-_fI_BJ5IWTyu41w5yo" alt="F LJTRX$DNFU`KR M7{E6Q" style="max-width: 100%;"></a></td> <td align="left"><a href="https://github.com/kaixindelele/ChatPaper">原项目地址</a></td> </tr> <tr> <td align="left">ChatReviewer</td> <td align="left">利用ChatGPT对论文进行<strong>优缺点分析,提出改进建议</strong></td> <td align="left">访问<a href="https://huggingface.co/spaces/ShiwenNi/ChatReviewer" rel="nofollow">ShiwenNi/ChatReviewer</a> 使用</td> <td align="left"><a target="_blank" rel="noopener noreferrer" href="https://github.com/kaixindelele/ChatPaper/blob/main/images/chatrevierer.png"><img alt="Animation Demo" src="https://github.com/kaixindelele/ChatPaper/raw/main/images/chatrevierer.png" style="max-width: 100%;"></a></td> <td align="left"><a href="https://github.com/nishiwen1214/ChatReviewer">原项目地址</a></td> </tr> <tr> <td align="left">ChatImprovement</td> <td align="left">利用ChatGPT对<strong>论文初稿进行润色、翻译等</strong></td> <td align="left">访问<a href="http://academic.chatwithpaper.org/" rel="nofollow">学术版GPT</a> 使用</td> <td align="left"><a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/28528386/252517576-d6cf75e7-b2a3-43c2-8d48-4174c9ee3560.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTc1NzYtZDZjZjc1ZTctYjJhMy00M2MyLThkNDgtNDE3NGM5ZWUzNTYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhZjE0OTQxYjQ1NTkyOGJmN2UzN2JmYjA1NmVkNjlmMGI5ZjM4N2EzY2NjNDM4MjY3ZDhiMDU1YWEwMTEyMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.H71JY4qybcxiTjaXPFsCWfsPh2y7kvy5ZCdVMXORcOk"><img src="https://private-user-images.githubusercontent.com/28528386/252517576-d6cf75e7-b2a3-43c2-8d48-4174c9ee3560.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDMxMzcxOTksIm5iZiI6MTc0MzEzNjg5OSwicGF0aCI6Ii8yODUyODM4Ni8yNTI1MTc1NzYtZDZjZjc1ZTctYjJhMy00M2MyLThkNDgtNDE3NGM5ZWUzNTYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzI4VDA0NDEzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhZjE0OTQxYjQ1NTkyOGJmN2UzN2JmYjA1NmVkNjlmMGI5ZjM4N2EzY2NjNDM4MjY3ZDhiMDU1YWEwMTEyMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.H71JY4qybcxiTjaXPFsCWfsPh2y7kvy5ZCdVMXORcOk" alt="网页版" style="max-width: 100%;"></a></td> <td align="left"><a href="https://github.com/binary-husky/chatgpt_academic">原项目地址</a></td> </tr> <tr> <td align="left">ChatResponse</td> <td align="left">利用ChatGPT对<strong>审稿人的提问进行回复</strong></td> <td align="left">访问<a href="https://huggingface.co/spaces/ShiwenNi/ChatResponse" rel="nofollow">ShiwenNi/ChatResponse</a> 使用</td> <td align="left"><a target="_blank" rel="noopener noreferrer" href="https://github.com/kaixindelele/ChatPaper/blob/main/images/chatresponse.jpg"><img alt="Animation Demo" src="https://github.com/kaixindelele/ChatPaper/raw/main/images/chatresponse.jpg" style="max-width: 100%;"></a></td> <td align="left"><a href="https://github.com/nishiwen1214/ChatReviewer">原项目地址</a></td> </tr> <tr> <td align="left">ChatGenTitle</td> <td align="left">利用百万arXiv论文元信息训练出来的论文题目生成模型,<strong>根据论文摘要生成合适题目</strong></td> <td align="left"><a href="https://drive.google.com/file/d/1akrC4-YnYdiyD1_VK-92hncN7HS0FLf5/view?usp=sharing" rel="nofollow"><img src="https://camo.githubusercontent.com/96889048f8a9014fdeba2a891f97150c6aac6e723f5190236b10215a97ed41f3/68747470733a2f2f636f6c61622e72657365617263682e676f6f676c652e636f6d2f6173736574732f636f6c61622d62616467652e737667" alt="Open In Colab" data-canonical-src="https://colab.research.google.com/assets/colab-badge.svg" style="max-width: 100%;"></a></td> <td align="left"><a target="_blank" rel="noopener noreferrer" href="https://github.com/kaixindelele/ChatPaper/blob/main/images/chatgentitle.png"><img alt="Animation Demo" src="https://github.com/kaixindelele/ChatPaper/raw/main/images/chatgentitle.png" style="max-width: 100%;"></a></td> <td align="left"><a href="https://github.com/WangRongsheng/ChatGenTitle">原项目地址</a></td> </tr> </tbody> </table></markdown-accessiblity-table> <blockquote> <p dir="auto"><strong>所有功能免费,代码开源,大家放心使用!</strong> 关于API如何获取,首先你得有一个没有被封的ChatGPT账号,然后<a href="https://chatgpt.cn.obiscr.com/blog/posts/2023/How-to-get-api-key/" rel="nofollow">获取Api Key</a> ,填入即可!</p> </blockquote> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">目录:</h2><a id="user-content-目录" class="anchor" aria-label="Permalink: 目录:" href="#目录"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#%E6%9C%80%E6%96%B0%E8%AE%AF%E6%81%AF">💥最新讯息</a></li> <li><a href="#%E5%BC%80%E5%8F%91%E5%8A%A8%E6%9C%BA">💫开发动机</a></li> <li><a href="#%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B">⛏️配置教程</a></li> <li><a href="https://github.com/kaixindelele/ChatPaper#%E4%BB%BB%E6%84%8Fpdf%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B">⛏️PDF全文翻译配置教程</a></li> <li><a href="#HuggingFace%E5%9C%A8%E7%BA%BF%E9%83%A8%E7%BD%B2">👷♂️HuggingFace在线部署</a></li> <li><a href="#%E6%9C%AC%E5%9C%B0PDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E7%A4%BA%E4%BE%8B">📄本地PDF全文翻译示例</a></li> <li><a href="#%E6%9C%AC%E5%9C%B0PDF%E5%85%A8%E6%96%87%E6%80%BB%E7%BB%93%E7%A4%BA%E4%BE%8B">📄本地PDF全文总结示例</a></li> <li><a href="#%E5%85%A8%E6%96%87%E6%80%BB%E7%BB%93%E7%A4%BA%E4%BE%8B">📄全文总结示例</a></li> <li><a href="#%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7">👁️🗨️使用技巧</a></li> <li><a href="#%E5%B8%B8%E8%A7%81%E6%8A%A5%E9%94%99">🛠️常见报错</a></li> <li><a href="#%E9%A1%B9%E7%9B%AE%E8%87%B4%E8%B0%A2">💐项目致谢</a></li> <li><a href="#%E8%B5%9E%E5%8A%A9%E6%88%91%E4%BB%AC">🌟赞助我们</a></li> <li><a href="#Starchart">🌈Starchart</a></li> <li><a href="#Contributors">🏆Contributors</a></li> </ul> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">最新讯息</h2><a id="user-content-最新讯息" class="anchor" aria-label="Permalink: 最新讯息" href="#最新讯息"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li>🌟<em>2023.07.23</em>: <a href="https://github.com/MasterYip">MasterYip</a> 同学开源了 <a href="https://github.com/MasterYip/ChatPaper2Xmind">ChatPaper2Xmind</a>! 将论文PDF通过Chat一键生成 图片+公式的简要XMind笔记</li> <li>🌟<em>2023.07.22</em>: 增加全新的本地PDF全文翻译功能!<a href="#%E4%BB%BB%E6%84%8FPDF%E5%85%A8%E6%96%87%E7%BF%BB%E8%AF%91%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B">⛏️PDF全文翻译配置教程</a>。</li> <li>🌟<em>2023.07.21</em>: 仓库的文件做了一个整理,可能会有些路径和bug,正在修复中。</li> <li>🌟<em>2023.07.09</em>: 师弟<a href="https://github.com/red-tie">red-tie</a>在<a href="https://github.com/CCCBora/auto-draft">auto-draft</a>的基础上,优化了一款<a href="https://github.com/kaixindelele/ChatPaper/tree/main/auto_survey">一键文献综述</a>的功能. 适用于大家对具体某个领域快速掌握,并且支持直接生成中文文献调研报告。文件配置简单,欢迎大家使用和反馈!</li> <li>🌟<em>2023.07.05</em>: 昨天我做了一个新的小玩具:<a href="https://github.com/kaixindelele/ChatSensitiveWords">ChatSensitiveWords</a>,利用LLM+敏感词库,来自动判别是否涉及敏感词。已经在学术版GPT网页端上线,欢迎LLM的开发者一起完善这个工作。</li> <li>🌟<em>2023.04.30</em>: <strong>唯一官方网站:</strong><a href="https://chatpaper.org/" rel="nofollow">https://chatpaper.org/</a> ,以及小白教程【ChatPaper网页版使用小白教程-哔哩哔哩】 <a href="https://b23.tv/HpDkcBU%EF%BC%8C" rel="nofollow">https://b23.tv/HpDkcBU,</a> 第三方文档:<a href="https://chatpaper.readthedocs.io" rel="nofollow">https://chatpaper.readthedocs.io</a> .</li> <li>🌟<em>2023.04.22</em>: 为了庆祝ChatPaper获得一万⭐,我们将联合两位同学,推出两个AI辅助文献总结工具,第一个是<a href="https://github.com/CCCBora/auto-draft">auto-draft</a>,AI自动搜集整理出文献总结!</li> <li>🌟<em>2023.04.17</em>: 为了降低学术伦理风险,我们为Chat_Reviewer增加了复杂的文字注入,效果如图:<a href="https://github.com/kaixindelele/ChatPaper/blob/main/images/reviews.jpg">示例图</a> ,希望各位老师同学在使用的时候,一定要注意学术伦理和学术声誉,不要滥用工具。如果谁有更好的方法来限制少数人的不规范使用,欢迎留言,为科研界做一份贡献。</li> <li>🌟<em>2023.03.31</em>: 目前已经离线总结了3w+的CCF-A会议论文了,以后大家可以不用等那么久了!</li> <li>🌟<em>2023.03.28</em>: 荣胜同学今天发布了一个非常有意思的工作<a href="https://github.com/WangRongsheng/ChatGenTitle">ChatGenTitle</a>,提供摘要生成标题,基于220wArXiv论文的数据微调的结果!</li> <li>🌟<em>2023.03.23</em>: chat_arxiv.py可以从arxiv网站,根据关键词,最近几天,几篇论文,直接爬取最新的领域论文了!解决了之前arxiv包的搜索不准确问题!</li> <li>🌟<em>2023.03.23</em>: ChatPaper终于成为完成体了!现在已经有论文总结+论文润色+论文分析与改进建议+论文审稿回复等功能了!</li> </ul> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">开发动机</h2><a id="user-content-开发动机" class="anchor" aria-label="Permalink: 开发动机" href="#开发动机"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>开发动机细节</b></code></summary> <p dir="auto">面对每天海量的arxiv论文,以及AI极速的进化,我们人类必须也要一起进化才能不被淘汰。</p> <p dir="auto">作为中科大强化学习方向的博士生,我深感焦虑,现在AI的进化速度,我开脑洞都赶不上。</p> <p dir="auto">因此我开发了这款ChatPaper,尝试用魔法打败魔法。</p> <p dir="auto">ChatPaper是一款论文总结工具。AI用一分钟总结论文,用户用一分钟阅读AI总结的论文。</p> <p dir="auto">它可以根据用户输入的关键词,自动在arxiv上下载最新的论文,再利用ChatGPT3.5的API接口强大的总结能力,将论文总结为固定的格式,以最少的文本,最低的阅读门槛,为大家提供最大信息量,以决定该精读哪些文章。</p> <p dir="auto">也可以提供本地的PDF文档地址,直接处理。</p> <p dir="auto">一般一个晚上就可以速通一个小领域的最新文章。我自己测试了两天了。</p> </details> <p dir="auto">祝大家在这个极速变化的时代中,能够和AI一起进化!</p> <p dir="auto">欢迎大家的赞助,以帮助支付网页运营的API和服务器成本,并让我们有动力继续开发更多更高质量的服务!</p> <p dir="auto">您的支持,是我持续更新的动力和赞赏!</p> <div dir="auto"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224892765-d22a36ad-7bd6-41ed-9e89-f7fe5e88944b.png"><img src="https://user-images.githubusercontent.com/28528386/224892765-d22a36ad-7bd6-41ed-9e89-f7fe5e88944b.png" width="200" height="250" style="max-width: 100%;"></a> </div> <p dir="auto">欢迎大家加入光荣的进化!</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">技术原理:</h2><a id="user-content-技术原理" class="anchor" aria-label="Permalink: 技术原理:" href="#技术原理"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>技术原理细节</b></code></summary> <p dir="auto">论文总结遵循下面四个问题:</p> <ol dir="auto"> <li> <p dir="auto">研究背景</p> </li> <li> <p dir="auto">过去的方案是什么?他们有什么问题?</p> </li> <li> <p dir="auto">本文方案是什么?具体步骤是什么?</p> </li> <li> <p dir="auto">本文在哪些任务中,取得了什么效果?</p> </li> </ol> <p dir="auto">基本上是大家做论文汇报的主要内容了。</p> <p dir="auto">实现细节: 提取摘要和introduction的内容,因为abstract很少会告诉你过去的方案是什么,存在什么问题。</p> <p dir="auto">然后提取method章节,总结方法的具体步骤</p> <p dir="auto">最后提取conclusion章节,总结全文。</p> <p dir="auto">分三次总结和喂入,如果每个部分超过了长度,则截断(目前这个方案太粗暴了,但也没有更好的更优雅的方案)</p> <p dir="auto">作为初筛,勉强够用。</p> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">配置教程</h2><a id="user-content-配置教程" class="anchor" aria-label="Permalink: 配置教程" href="#配置教程"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>配置教程细节</b></code></summary> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">一、以脚本方式运行</h3><a id="user-content-一以脚本方式运行" class="anchor" aria-label="Permalink: 一、以脚本方式运行" href="#一以脚本方式运行"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Windows, Mac和Linux系统应该都可以</p> <p dir="auto">python版本最好是3.9,其他版本应该也没啥问题</p> <ol dir="auto"> <li>在apikey.ini中填入你的openai key。注意,这个代码纯本地项目,你的key很安全!如果不被OpenAI封的话~ 小白用户比较多,我直接给截图示意下可能会更好:</li> </ol> <div dir="auto"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224497146-f5518553-04a2-4efa-90e6-4ac0febb8177.png"><img src="https://user-images.githubusercontent.com/28528386/224497146-f5518553-04a2-4efa-90e6-4ac0febb8177.png" width="500" height="220" style="max-width: 100%;"></a> </div> <ol start="2" dir="auto"> <li>使用过程要保证全局代理! 如果客户端时clash的话,可以参考这个进行配置:</li> </ol> <div dir="auto"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224529317-f49265d7-fb5f-4dd5-b462-930aaa0c682d.png"><img src="https://user-images.githubusercontent.com/28528386/224529317-f49265d7-fb5f-4dd5-b462-930aaa0c682d.png" width="500" height="350" style="max-width: 100%;"></a> </div> <ol start="3" dir="auto"> <li>安装依赖:最好翻墙,或者用国内源。</li> </ol> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="pip install -r requirements.txt"><pre>pip install -r requirements.txt</pre></div> <p dir="auto">4.1. Arxiv在线批量搜索+下载+总结: 运行chat_paper.py, 比如:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_paper.py --query "chatgpt robot" --filter_keys "chatgpt robot" --max_results 3"><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_paper</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">query</span> <span class="pl-s">"chatgpt robot"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">filter_keys</span> <span class="pl-s">"chatgpt robot"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">max_results</span> <span class="pl-c1">3</span></pre></div> <p dir="auto">更准确的脚本是chat_arxiv.py,使用方案,命令行更加简洁:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_arxiv.py --query "chatgpt robot" --page_num 2 --max_results 3 --days 10"><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_arxiv</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">query</span> <span class="pl-s">"chatgpt robot"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">page_num</span> <span class="pl-c1">2</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">max_results</span> <span class="pl-c1">3</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">days</span> <span class="pl-c1">10</span></pre></div> <p dir="auto">其中query仍然是关键词,page_num是搜索的页面,每页和官网一样,最大是50篇,max_results是最终总结前N篇的文章,days是选最近几天的论文,严格筛选!</p> <p dir="auto"><strong>注意:搜索词无法识别<code>-</code>,只能识别空格!所以原标题的连字符最好不要用!</strong> 感谢网友提供的信息</p> <p dir="auto">4.2. Arxiv在线批量搜索+下载+总结+高级搜索: 运行chat_paper.py, 比如:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_paper.py --query "all: reinforcement learning robot 2023" --filter_keys "reinforcement robot" --max_results 3"><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_paper</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">query</span> <span class="pl-s">"all: reinforcement learning robot 2023"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">filter_keys</span> <span class="pl-s">"reinforcement robot"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">max_results</span> <span class="pl-c1">3</span></pre></div> <p dir="auto">💥💥💥<strong>7K星了,发布一个猫娘版提示词,希望大家一起让猫娘活起来~:<a href="https://github.com/kaixindelele/ChatPaper/blob/main/chat_arxiv_maomao.py">脚本:chat_arxiv_maomao.py</a>, <a href="https://github.com/kaixindelele/ChatPaper/blob/main/images/maomao.png">总结图片</a> </strong></p> <p dir="auto">4.3. Arxiv在线批量搜索+下载+总结+高级搜索+指定作者: 运行chat_paper.py, 比如:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_paper.py --query "au: Sergey Levine" --filter_keys "reinforcement robot" --max_results 3"><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_paper</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">query</span> <span class="pl-s">"au: Sergey Levine"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">filter_keys</span> <span class="pl-s">"reinforcement robot"</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">max_results</span> <span class="pl-c1">3</span></pre></div> <p dir="auto">4.4. 本地pdf总结: 运行chat_paper.py, 比如:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_paper.py --pdf_path "demo.pdf""><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_paper</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">pdf_path</span> <span class="pl-s">"demo.pdf"</span></pre></div> <p dir="auto">4.5. 本地文件夹批量总结: 运行chat_paper.py, 比如:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="python chat_paper.py --pdf_path "your_absolute_path""><pre><span class="pl-s1">python</span> <span class="pl-s1">chat_paper</span>.<span class="pl-c1">py</span> <span class="pl-c1">-</span><span class="pl-c1">-</span><span class="pl-s1">pdf_path</span> <span class="pl-s">"your_absolute_path"</span></pre></div> <p dir="auto">4.6. 谷歌学术论文整理: 运行google_scholar_spider.py, 比如:</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="python google_scholar_spider.py --kw "deep learning" --nresults 30 --csvpath "./data" --sortby "cit/year" --plotresults 1"><pre class="notranslate"><code>python google_scholar_spider.py --kw "deep learning" --nresults 30 --csvpath "./data" --sortby "cit/year" --plotresults 1 </code></pre></div> <p dir="auto">此命令在Google Scholar上搜索与“deep learning”相关的文章,检索30个结果,将结果保存到“./data”文件夹中的CSV文件中,按每年引用次数排序数据,并绘制结果。</p> <p dir="auto">具体使用和参数请参考<a href="https://github.com/JessyTsu1/google_scholar_spider">https://github.com/JessyTsu1/google_scholar_spider</a></p> <p dir="auto">4.7. Gitee图床的配置教程(选配,比较麻烦)</p> <p dir="auto">效果和配置视频:<a href="https://www.bilibili.com/video/BV1Rh4y1173t/" rel="nofollow">https://www.bilibili.com/video/BV1Rh4y1173t/</a> 教程文章:<a href="https://zhuanlan.zhihu.com/p/644326031" rel="nofollow">https://zhuanlan.zhihu.com/p/644326031</a></p> <hr> <p dir="auto">另外注意,目前这个不支持<strong>综述类</strong>文章。</p> <p dir="auto">B站讲解视频:<a href="https://www.bilibili.com/video/BV1EM411x7Tr/" rel="nofollow">我把ChatPaper开源了!AI速读PDF论文和速通Arxiv论文</a></p> <p dir="auto"><strong>注意:key_word不重要,但是filter_keys非常重要!</strong> 一定要修改成你的关键词。</p> <p dir="auto">另外关于arxiv的搜索关键词可以参考下图:</p> <div dir="auto"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224550698-f0e18bf7-f09f-40a1-a747-1d596b3edd01.png"><img src="https://user-images.githubusercontent.com/28528386/224550698-f0e18bf7-f09f-40a1-a747-1d596b3edd01.png" width="250" height="350" style="max-width: 100%;"></a> </div> <ol start="5" dir="auto"> <li>参数介绍:</li> </ol> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[--pdf_path 是否直接读取本地的pdf文档?如果不设置的话,直接从arxiv上搜索并且下载] [--query 向arxiv网站搜索的关键词,有一些缩写示范:all, ti(title), au(author),一个query示例:all: ChatGPT robot] [--key_word 你感兴趣领域的关键词,重要性不高] [--filter_keys 你需要在摘要文本中搜索的关键词,必须保证每个词都出现,才算是你的目标论文] [--max_results 每次搜索的最大文章数,经过上面的筛选,才是你的目标论文数,chat只总结筛选后的论文] [--sort arxiv的排序方式,默认是相关性,也可以是时间,arxiv.SortCriterion.LastUpdatedDate 或者 arxiv.SortCriterion.Relevance, 别加引号] [--save_image 是否存图片,如果你没注册gitee的图床的话,默认为false] [--file_format 文件保存格式,默认是markdown的md格式,也可以是txt] parser.add_argument("--pdf_path", type=str, default='', help="if none, the bot will download from arxiv with query") parser.add_argument("--query", type=str, default='all: ChatGPT robot', help="the query string, ti: xx, au: xx, all: xx,") parser.add_argument("--key_word", type=str, default='reinforcement learning', help="the key word of user research fields") parser.add_argument("--filter_keys", type=str, default='ChatGPT robot', help="the filter key words, 摘要中每个单词都得有,才会被筛选为目标论文") parser.add_argument("--max_results", type=int, default=1, help="the maximum number of results") parser.add_argument("--sort", default=arxiv.SortCriterion.Relevance, help="another is arxiv.SortCriterion.LastUpdatedDate") parser.add_argument("--save_image", default=False, help="save image? It takes a minute or two to save a picture! But pretty") parser.add_argument("--file_format", type=str, default='md', help="导出的文件格式,如果存图片的话,最好是md,如果不是的话,txt的不会乱")"><pre class="notranslate"><code>[--pdf_path 是否直接读取本地的pdf文档?如果不设置的话,直接从arxiv上搜索并且下载] [--query 向arxiv网站搜索的关键词,有一些缩写示范:all, ti(title), au(author),一个query示例:all: ChatGPT robot] [--key_word 你感兴趣领域的关键词,重要性不高] [--filter_keys 你需要在摘要文本中搜索的关键词,必须保证每个词都出现,才算是你的目标论文] [--max_results 每次搜索的最大文章数,经过上面的筛选,才是你的目标论文数,chat只总结筛选后的论文] [--sort arxiv的排序方式,默认是相关性,也可以是时间,arxiv.SortCriterion.LastUpdatedDate 或者 arxiv.SortCriterion.Relevance, 别加引号] [--save_image 是否存图片,如果你没注册gitee的图床的话,默认为false] [--file_format 文件保存格式,默认是markdown的md格式,也可以是txt] parser.add_argument("--pdf_path", type=str, default='', help="if none, the bot will download from arxiv with query") parser.add_argument("--query", type=str, default='all: ChatGPT robot', help="the query string, ti: xx, au: xx, all: xx,") parser.add_argument("--key_word", type=str, default='reinforcement learning', help="the key word of user research fields") parser.add_argument("--filter_keys", type=str, default='ChatGPT robot', help="the filter key words, 摘要中每个单词都得有,才会被筛选为目标论文") parser.add_argument("--max_results", type=int, default=1, help="the maximum number of results") parser.add_argument("--sort", default=arxiv.SortCriterion.Relevance, help="another is arxiv.SortCriterion.LastUpdatedDate") parser.add_argument("--save_image", default=False, help="save image? It takes a minute or two to save a picture! But pretty") parser.add_argument("--file_format", type=str, default='md', help="导出的文件格式,如果存图片的话,最好是md,如果不是的话,txt的不会乱") </code></pre></div> </details> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">二、 以Flask服务运行</h3><a id="user-content-二-以flask服务运行" class="anchor" aria-label="Permalink: 二、 以Flask服务运行" href="#二-以flask服务运行"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>Flask配置教程</b></code></summary> <p dir="auto">注意:更新版本后,可能有路径的报错</p> <ol dir="auto"> <li>下载项目并进入项目目录</li> </ol> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="git clone https://github.com/kaixindelele/ChatPaper.git cd ChatPaper"><pre lang="text" class="notranslate"><code>git clone https://github.com/kaixindelele/ChatPaper.git cd ChatPaper </code></pre></div> <ol start="2" dir="auto"> <li>在项目根目录下的 <code>apikey.ini</code> 文件中填入您的 OpenAI 密钥。</li> <li>配置虚拟环境并下载依赖</li> </ol> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pip install virtualenv 安装虚拟环境工具 virtualenv venv 新建一个名为venv的虚拟环境 Linux/Mac下: source venv/bin/activate Windows下: .\venv\Scripts\activate.bat pip install -r requirements.txt"><pre lang="text" class="notranslate"><code>pip install virtualenv 安装虚拟环境工具 virtualenv venv 新建一个名为venv的虚拟环境 Linux/Mac下: source venv/bin/activate Windows下: .\venv\Scripts\activate.bat pip install -r requirements.txt </code></pre></div> <ol start="4" dir="auto"> <li>启动服务</li> </ol> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="python3 app.py # 启动 Flask 服务。运行此命令后,Flask 服务将在本地的 5000 端口上启动并等待用户请求。在浏览器中访问以下地址之一以访问 Flask 服务的主页: # http://127.0.0.1:5000/ # 或 # http://127.0.0.1:5000/index"><pre lang="text" class="notranslate"><code>python3 app.py # 启动 Flask 服务。运行此命令后,Flask 服务将在本地的 5000 端口上启动并等待用户请求。在浏览器中访问以下地址之一以访问 Flask 服务的主页: # http://127.0.0.1:5000/ # 或 # http://127.0.0.1:5000/index </code></pre></div> <p dir="auto">访问 <a href="http://127.0.0.1:5000/" rel="nofollow">http://127.0.0.1:5000/</a> 后,您将看到主页。在主页上,您可以点击不同的链接来调用各种服务。您可以通过修改链接中的参数值来实现不同的效果。有关参数详细信息,请参阅上一步骤中的详细介绍</p> <p dir="auto"><a target="_blank" rel="noopener noreferrer" href="/kaixindelele/ChatPaper/blob/main/images/flask_web_home.png"><img src="/kaixindelele/ChatPaper/raw/main/images/flask_web_home.png" alt="flask主界面" style="max-width: 100%;"></a></p> <ul dir="auto"> <li>特别的,这四个接口实际是封装了根目录下四个脚本的 web 界面。参数可以通过链接来修改。例如要运行“arxiv?query=GPT-4&key_word=GPT+robot&page_num=1&max_results=1&days=1&sort=web&save_image=False&file_format=md&language=zh”的话,相当于在根目录下调用 chat_arxiv.py 并返回结果。这个显示的结果和在命令行中调用的结果是一样的(即:python chat_arxiv.py --query "GPT-4" --key_word "GPT robot" --page_num 1 --max_results 1 --days 1 --sort "web" --save_image False --file_format "md" --language "zh")。您可以通过修改参数来获得其他搜索结果。</li> </ul> <p dir="auto">如果以这种方式部署的话,结果会保存在同级目录下新生成的export、pdf_files 和response_file三个文件夹里</p> </details> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">三、以docker形式运行</h3><a id="user-content-三以docker形式运行" class="anchor" aria-label="Permalink: 三、以docker形式运行" href="#三以docker形式运行"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>Docker配置教程细节</b></code></summary> <p dir="auto">注意:Docker的路径也被我打乱了,很可能存在问题,不推荐尝试。</p> <ol dir="auto"> <li> <p dir="auto">安装docker和docker-compose,可以参考以下链接</p> <p dir="auto"><a href="https://yeasy.gitbook.io/docker_practice/install" rel="nofollow">https://yeasy.gitbook.io/docker_practice/install</a></p> <p dir="auto"><a href="https://yeasy.gitbook.io/docker_practice/compose/install" rel="nofollow">https://yeasy.gitbook.io/docker_practice/compose/install</a></p> </li> <li> <p dir="auto">找地方放项目根目录下的“docker-compose.yaml”文件,将21行的<code>YOUR_KEY_HERE</code>替换为自己的openai_key</p> </li> <li> <p dir="auto">在同级目录下在命令行运行</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="docker-compose up -d"><pre class="notranslate"><code>docker-compose up -d </code></pre></div> </li> <li> <p dir="auto">这样的界面代表一些正常,随后访问<a href="https://127.0.0.1:28460/" rel="nofollow">https://127.0.0.1:28460/</a> 就可以从网页上打开了! <a target="_blank" rel="noopener noreferrer" href="/kaixindelele/ChatPaper/blob/main/images/docker-compose.png"><img src="/kaixindelele/ChatPaper/raw/main/images/docker-compose.png" alt="docker-compose" style="max-width: 100%;"></a></p> </li> </ol> <ul dir="auto"> <li> <p dir="auto">特别的,如果有改进项目的想法,您可以查看 build.sh、dev.sh、tagpush.sh这三个脚本以及根目录docker目录下文件的作用,相信它们会对你容器化封装项目的思想有进一步提升</p> </li> <li> <p dir="auto">所有的运行结果都被保存在 Docker 的 volumes 中,如果想以服务的形式长期部署,您可以将这些目录映射出来。默认情况下,它们位于 /var/lib/docker/volumes/ 下。您可以进入该目录并查看 chatpaper_log、chatpaper_export、chatpaper_pdf_files 和 chatpaper_response_file 四个相关文件夹中的结果。有关 Docker volumes 的详细解释,请参考此链接:<a href="http://docker.baoshu.red/data_management/volume.html%E3%80%82" rel="nofollow">http://docker.baoshu.red/data_management/volume.html。</a></p> </li> </ul> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">HuggingFace在线部署</h2><a id="user-content-huggingface在线部署" class="anchor" aria-label="Permalink: HuggingFace在线部署" href="#huggingface在线部署"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>HuggingFace在线部署细节</b></code></summary> <p dir="auto">注意:这部分也是一样,功能暂时被废掉了,建议大家直接使用chatwithpaper.org的网页版。</p> <ol dir="auto"> <li>在<a href="https://huggingface.co/" rel="nofollow">Hugging Face</a> 创建自己的个人账号并登录;</li> <li>进入ChatPaper主仓库:<a href="https://huggingface.co/spaces/wangrongsheng/ChatPaper" rel="nofollow">https://huggingface.co/spaces/wangrongsheng/ChatPaper</a> ,您可以在<a href="https://huggingface.co/spaces/wangrongsheng/ChatPaper/tree/main" rel="nofollow">Files and Version</a> 看到所有的最新部署代码;</li> <li>[可选]私有化部署使用:点击<a href="https://huggingface.co/spaces/wangrongsheng/ChatPaper?duplicate=true" rel="nofollow">Duplicate this space</a> ,在弹出的页面中将<code>Visibility</code>选择为<code>Private</code>,最后点击<code>Duplicate Space</code>,Space的代码就会部署到你自己的Space中,为了方便自己每次调用可以不用填写API-key,您可以将<a href="https://huggingface.co/spaces/wangrongsheng/ChatPaper/blob/5335124d25b1bc4017a2f5c48b0038dfa545bf63/app.py#L845" rel="nofollow">app.py#L845</a> 修改为您的密钥:<code>default="sk-abcdxxxxxxxx"</code> ,点击保存文件就会立即重新部署了;</li> <li>[可选]公有化部署使用:点击<a href="https://huggingface.co/spaces/wangrongsheng/ChatPaper?duplicate=true" rel="nofollow">Duplicate this space</a> ,在弹出的页面中将<code>Visibility</code>选择为<code>Public</code>,最后点击<code>Duplicate Space</code>,Space的代码就会部署到你自己的Space中,这样就可以完成一个公有化的部署。</li> </ol> <blockquote> <p dir="auto">注:公有化部署和私有化部署根据你的需求二选一即可!</p> </blockquote> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">任意PDF全文翻译配置教程</h2><a id="user-content-任意pdf全文翻译配置教程" class="anchor" aria-label="Permalink: 任意PDF全文翻译配置教程" href="#任意pdf全文翻译配置教程"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ol dir="auto"> <li>必须是在Ubuntu或者MacOS下使用!接下来的教程默认是Ubuntu18.04/20.04. 推荐使用vultr云服务器,非常省心。</li> <li>在安装了ChatPaper默认依赖之后,激活它的虚拟环境,进入scipdf_parser-master文件夹,进入这个路径后,继续安装这里面的依赖。</li> <li>安装好了这里的以来后,还需要安装Java的环境,我们推荐安装java11.0.19</li> <li>先更新系统包:sudo apt-get update</li> <li>然后命令安装 OpenJDK 11:sudo apt-get install openjdk-11-jdk</li> <li>完成以上步骤后,你可以用以下命令来确认安装的 Java 版本:java -version</li> <li>这将返回你当前的 Java 版本信息。到这一步,基本上Java的安装成功</li> <li>再然后,再后台启动scipdf服务,这里需要下载不少依赖:bash serve_grobid.sh</li> <li>等服务启动好后,可以不用管它,新开一个终端,启动python程序:python chat_summary.py</li> <li>也可以后台默认启动serve_grobid.sh: nohup bash serve_grobid.sh</li> </ol> <p dir="auto">最后祝你使用的开心!</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">本地PDF全文翻译示例</h2><a id="user-content-本地pdf全文翻译示例" class="anchor" aria-label="Permalink: 本地PDF全文翻译示例" href="#本地pdf全文翻译示例"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>查看本地PDF全文翻译示例</b></code></summary> <div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">强化学习、机器人学和模拟到真实世界的迁移</h1><a id="user-content-强化学习机器人学和模拟到真实世界的迁移" class="anchor" aria-label="Permalink: 强化学习、机器人学和模拟到真实世界的迁移" href="#强化学习机器人学和模拟到真实世界的迁移"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Reinforcement Learning, Robotics, Sim-to-Real Transfer</h2><a id="user-content-reinforcement-learning-robotics-sim-to-real-transfer" class="anchor" aria-label="Permalink: Reinforcement Learning, Robotics, Sim-to-Real Transfer" href="#reinforcement-learning-robotics-sim-to-real-transfer"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">摘要</h2><a id="user-content-摘要" class="anchor" aria-label="Permalink: 摘要" href="#摘要"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">当前的强化学习(Reinforcement Learning,RL)算法在长期任务中存在困难,其中时间可能被浪费在探索死胡同和任务进展可能很容易逆转的地方。我们开发了SPOT框架,该框架在行动安全区域内进行探索,学习有关不安全区域的信息而无需探索它们,并优先考虑逆转先前进展的经验,以实现卓越的学习效果。SPOT框架成功地完成了各种任务的模拟试验,在堆叠4个方块时,将基准试验成功率从13%提高到100%,在创建4个方块的行时,将基准试验成功率从13%提高到99%,在清理敌对模式下排列的玩具时,将基准试验成功率从84%提高到95%。在每次试验中,相对于行动次数,效率通常提高了30%或更多,而训练只需1-20k次行动,具体取决于任务。此外,我们还展示了直接的模拟到真实转移。通过在真实机器人上直接加载经过模拟训练的模型,无需进行额外的真实世界微调,我们能够在100%的试验中创建真实的堆叠,效率为61%,并在100%的试验中创建真实的行,效率为59%。据我们所知,这是首次将成功的模拟到真实转移应用于长期多步骤任务,如堆叠方块和创建行,并考虑到进展的逆转。代码可在<a href="https://github.com/jhulcsr/good_robot%E8%8E%B7%E5%8F%96%E3%80%82%E7%B4%A2%E5%BC%95%E8%AF%8D-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E7%94%A8%E4%BA%8E%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BA%94%E7%94%A8%EF%BC%8C%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9C%A8%E6%8A%93%E5%8F%96%E5%92%8C%E6%93%8D%E4%BD%9C%E4%B8%AD%EF%BC%8C%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E3%80%82%E5%9C%A8%E7%9C%9F%E5%AE%9E%E4%B8%96%E7%95%8C%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E5%A4%9A%E6%AD%A5%E9%AA%A4%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA%E4%BB%BB%E5%8A%A1%E9%9D%9E%E5%B8%B8%E5%85%B7%E6%9C%89%E6%8C%91%E6%88%98%E6%80%A7%E3%80%82%E5%AE%83%E4%BB%AC%E5%B0%86%E8%A1%8C%E5%8A%A8%E7%9A%84%E5%8D%B3%E6%97%B6%E7%89%A9%E7%90%86%E5%90%8E%E6%9E%9C%E4%B8%8E%E4%BA%86%E8%A7%A3%E8%BF%99%E4%BA%9B%E5%90%8E%E6%9E%9C%E5%A6%82%E4%BD%95%E5%BD%B1%E5%93%8D%E6%95%B4%E4%BD%93%E7%9B%AE%E6%A0%87%E7%9A%84%E8%BF%9B%E5%B1%95%E7%9A%84%E9%9C%80%E6%B1%82%E7%9B%B8%E7%BB%93%E5%90%88%E3%80%82%E6%AD%A4%E5%A4%96%EF%BC%8C%E4%B8%8E%E4%BC%A0%E7%BB%9F%E7%9A%84%E5%8A%A8%E4%BD%9C%E8%A7%84%E5%88%92%E7%9B%B8%E5%8F%8D%EF%BC%8C%E5%90%8E%E8%80%85%E5%81%87%E8%AE%BE%E5%85%B7%E6%9C%89%E5%AE%8C%E7%BE%8E%E4%BF%A1%E6%81%AF%E5%92%8C%E5%B7%B2%E7%9F%A5%E7%9A%84%E8%A1%8C%E5%8A%A8%E6%A8%A1%E5%9E%8B%EF%BC%8C%E5%AD%A6%E4%B9%A0%E5%8F%AA%E8%83%BD%E4%BB%8E%E6%84%9F%E7%9F%A5%E7%8E%AF%E5%A2%83%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%9C%89%E9%99%90%E7%9A%84%E7%A9%BA%E9%97%B4%E5%92%8C%E6%97%B6%E9%97%B4%E4%BF%A1%E6%81%AF%E3%80%82">https://github.com/jhulcsr/good_robot获取。索引词-计算机视觉用于其他机器人应用,深度学习在抓取和操作中,强化学习。在真实世界环境中,多步骤的机器人任务非常具有挑战性。它们将行动的即时物理后果与了解这些后果如何影响整体目标的进展的需求相结合。此外,与传统的动作规划相反,后者假设具有完美信息和已知的行动模型,学习只能从感知环境中获取有限的空间和时间信息。</a></p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">"好机器人!": 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)</h2><a id="user-content-好机器人-用于多步骤视觉任务的高效强化学习与模拟到实际转移good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer" class="anchor" aria-label="Permalink: "好机器人!": 用于多步骤视觉任务的高效强化学习与模拟到实际转移(Good Robot!": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer)" href="#好机器人-用于多步骤视觉任务的高效强化学习与模拟到实际转移good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">图1. 机器人创建的方块堆和行,通过模拟到实际转移。我们的正向任务计划(SPOT)框架可以帮助我们高效地找到能够完成多步骤任务的策略。视频概述:<a href="https://youtu.be/MbCuEZadkIw" rel="nofollow">https://youtu.be/MbCuEZadkIw</a></p> <p dir="auto">我们的关键观察是,强化学习在探索行为时会浪费大量时间,而这些行为最多是无效的。例如,在堆叠方块的任务中(图1),人类知道抓取空中的空气永远不会抓住物体,这是“常识”,但对于普通算法来说,可能需要一些时间才能发现。为了解决这个问题,我们提出了正向任务计划(SPOT)框架,以一种能够显著加速学习和最终任务效率的方式将常识约束纳入深度强化学习(DRL)中[1],[2]。</p> <p dir="auto">虽然这些约束是直观的,但将它们以一种能够实现可靠和高效学习的方式纳入深度强化学习中是非常困难的。我们的方法(第三节)受到一种人道而有效的宠物训练方法的启发,有时被称为“正向条件训练”。考虑训练一只名为“Spot”的狗忽略一个她特别感兴趣的物体或事件的目标。当Spot展示出部分符合期望的最终行为时,她会得到奖励,而在逆行的情况下,她会被立即从不得奖励的情况中移开。实现这一目标的一种方法是手中开始有多个奖励,将一个奖励放在Spot的视野中,如果她迫不及待地跳向奖励(一种负面行为),人类会立即夺走并隐藏奖励,以此来对该行为不给予奖励。通过反复训练,Spot最终会犹豫不决,这时她会立即得到称赞“好Spot!”并得到一个奖励,与此同时,她应该忽略的物体也会被移开。这种方法可以扩展到新的情况和行为,并且鼓励探索和快速改进一旦初始的部分成功被实现。正如我们在第三节中所描述的,我们的奖励函数和SPOT-Q学习也被设计成对于逆行的行为既不给予奖励也不进行惩罚。</p> <p dir="auto">逆行的情况有不同的复杂性。一方面,无法将第一个方块堆叠在另一个方块上会使机器人处于类似的情况中,因此恢复需要Ω(1)个行动。然而,一旦存在一个由n个方块组成的堆叠,即使成功抓取也可能将整个堆叠推倒,逆转给定试验的整个行动历史(图3),因此恢复需要Ω(n)个行动。对于机器人学习多步骤任务的强化学习来说,后一种更为戏剧化的逆行情况是一个具有挑战性的问题;我们的工作提供了一种高效解决这种情况的方法。</p> <p dir="auto">总之,本文的贡献包括: 1)用于多步骤任务的SPOT框架,它在模拟环境中改进了现有技术,并能够高效地在实际情况中进行训练。 2)SPOT-Q学习,一种安全高效的训练方法,其中探索行为在运行时通过掩码进行聚焦,并从过去的经验中生成额外的即时训练样本。 3)从模拟堆叠和行构建任务到实际环境中的零样本领域转移,以及对硬件和场景位置变化的鲁棒性。理想情况下,算法应该能够高效地学习避免这种情况,并通过绿色箭头所示的成功指标来取得成功。因此,需要考虑时间和工作空间的依赖关系。当前时间t i ∈ T,i ∈ [1...n]的事件可以影响过去行动t h |h < i和未来行动t j |j > i的成功结果的可能性。在我们的实验中,部分堆叠或行本身就是一个场景障碍物。这里的灰色墙壁仅用于说明目的。 4)一项消融研究表明,情境去除显著减少了逆行情况;进展度指标提高了效率;试验奖励在折扣方面有所改进,但在效率和对稀疏奖励的支持之间存在权衡。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">II. 相关工作</h2><a id="user-content-ii-相关工作" class="anchor" aria-label="Permalink: II. 相关工作" href="#ii-相关工作"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">深度神经网络(DNNs)使得在机器人操作中可以使用原始传感器数据[1]-[5]。在某些方法中,DNN的输出直接对应于运动指令,例如[3],[4]。而高级方法则假设了机器人控制的简单模型,并专注于边界框或姿态检测,用于下游的抓取规划[1],[6]-[11]。RGB-D传感器可以带来益处[1],[11],[12],因为它们可以捕捉有关工作空间的物理信息。以物体为中心的技能学习可以有效且具有良好的泛化能力,例如[13]-[16]专注于通过将模拟堆栈分类为稳定或可能倒塌来进行堆叠。类似地,[17],[18]通过预测推动动作的结果来发展物理直觉。我们的工作不同之处在于,在多步任务的进展过程中,同时发展视觉理解和物理直觉。</p> <p dir="auto">抓取是一个特别活跃的研究领域。DexNet [19],[20]从大量的自上而下抓取的深度图像中学习,并在抓取新物体时表现出极好的性能,但不考虑长期任务。6-DOF Grasp-Net [21]使用模拟抓取数据来推广到新物体,并已扩展到处理杂乱环境中新物体的可靠抓取[12]。</p> <p dir="auto">深度强化学习(DRL)已经在机器人操作中的越来越复杂的任务中证明了其有效性[1],[5],[22],[23]。QT-Opt [5]通过对真实机器人上数十万次抓取尝试进行学习,掌握了操作技能。域自适应,例如在模拟中应用随机纹理,也可以增强从模拟到真实世界的转移[24],[25]。其他方法专注于将视觉运动技能从模拟机器人转移到真实机器人[22],[26]。我们的工作通过学习像素级成功概率图,不是直接回归扭矩向量,而是按照之前的工作[1],[23]指导低级控制器执行动作。</p> <p dir="auto">稀疏奖励的多步任务对于强化学习来说是一个特殊的挑战,因为解决方案不太可能通过随机探索来发现。如果可用,演示可以是引导探索的有效方法[27]-[29]。多步任务可以分为包含草图的模块化子任务[30],而[31]具有机器人特定和任务特定的学习模块。</p> <p dir="auto">在许多实际环境中,安全性对于强化学习至关重要[32]-[34]。第IV-D节的初步实验表明,SPOT-Q提供了一种将安全性纳入基于Q-Learning的通用算法的方法[35]。</p> <p dir="auto">我们在第IV节和第V节将SPOT框架与VPG [1]进行了比较,VPG是一种基于强化学习的桌面清理任务的方法,可以在单个机器人上的几小时内从图像进行训练。VPG经常能够完成对抗性场景,例如首先将一组紧密堆叠的块推开,然后抓取现在分离的物体。最近的一些与之相关的工作涉及具有多个动作的任务:[36]将一个块放在另一个块上,[37]将一条毛巾放在杆上,[38]清空一个垃圾箱,但前两个任务不是长期任务,并且从未考虑到进展的逆转(图3)。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">III. 方法</h2><a id="user-content-iii-方法" class="anchor" aria-label="Permalink: III. 方法" href="#iii-方法"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们研究了多步骤任务,这些任务具有稀疏且近似的任务进展概念。通过采取以下四个措施,可以提高学习的效率:将这些问题结构化以捕捉数据的不变性属性,将传统算法应用于最有效的领域,确保奖励不会通过失败的动作传播,并引入一种可以消除不必要探索的算法。我们将在基于视觉的机器人操作的装配问题的背景下展示我们的方法。</p> <p dir="auto">我们将问题构建为一个马尔可夫决策过程(S,A,P,R),其中状态空间为S,动作空间为A,转移概率函数为P:S×S×A→R,奖励函数为R:S×A→R。这包括一个简化的假设,将传感器观测和状态等同起来。在时间步t,代理观察到状态s_t,并根据其策略π:S→A选择一个动作a_t。该动作以概率P(s_t+1 | s_t,a_t)导致新的状态s_t+1。与VPG [1]一样,我们使用Q-learning来生成选择动作的确定性策略。函数Q:S×A→R估计了给定状态下动作的预期奖励R,即动作的“质量”。我们的策略π如下选择动作a_t: π(s_t) = arg max a∈A Q(s_t, a) (1)</p> <p dir="auto">因此,训练的目标是学习一个最大化奖励R随时间变化的Q。这通过迭代地最小化|Q(s_t, a_t) - y_t|来实现,其中目标值y_t为: y_t = R(s_t+1, a_t) + γQ(s_t+1, π(s_t+1)) (2)</p> <p dir="auto">Q-learning是强化学习中的一个基本算法,但在诸如机器人学等应用中,其最一般形式存在关键限制,其中动作和新试验的空间和成本非常大,高效的探索可能是至关重要甚至是安全关键的。它还高度依赖于奖励函数R,其定义可能导致学习效率相差数个数量级,正如我们在第IV-C节中所展示的,因此我们从奖励塑形的方法开始。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">A. 奖励塑造</h2><a id="user-content-a-奖励塑造" class="anchor" aria-label="Permalink: A. 奖励塑造" href="#a-奖励塑造"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">奖励塑造是一种优化奖励R的有效技术,用于高效训练策略[39]和它们的神经网络。在这里,我们提出了几个奖励函数供后续比较(第IV-C节),这些函数构建了一个通用的奖励塑造公式,有助于在广泛的新任务上进行高效学习,从而减少成功奖励计划的临时性。</p> <p dir="auto">假设每个动作a与一个子任务φ ∈ Φ相关联,并且我们有一个指示函数1 a [s t+1 , a t ],如果动作a t 在子任务φ上成功,则等于1,否则等于0。与VPG [1]类似,我们的基准奖励遵循这个原则,并包括一个子任务加权函数W:Φ → R,根据它们的主观难度和重要性进行加权:</p> <p dir="auto">R base (s t+1 , a t ) = W (φ t )1 a [s t+1 , a t ] (3)</p> <p dir="auto">接下来,我们定义了一个稀疏且近似的任务进展函数P:S → R ∈ [0, 1],表示朝着整体目标的比例进展,其中P(s t ) = 1表示任务完成。正如我们在Spot狗的故事中所讲述的(第I节),进展的逆转导致我们对代理进行情境移除(SR),并且有一个指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:</p> <p dir="auto">R SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ) (4)</p> <p dir="auto">R P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ) (5)</p> <p dir="auto">R base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,每个奖励函数都可以“即时”获得。然而,它们并没有考虑早期错误可能导致许多步骤后失败的可能性(图3,4),因此我们将开发一种奖励,可以在整个试验中传播。</p> <p dir="auto">W φ t ∈ {W push =0.1, W grasp =1, W place =1}。</p> <p dir="auto">动作11-14:抓取和放置动作导致一个完整的高度为4的堆栈,完成了试验。动作14处的最终R trial 是2 × R P。这里为了图表的可见性,W φ t ∈ {W push = .5, W grasp = 1, W place =1.25}。</p> <p dir="auto">在训练过程中,我们在物理上重置环境(图3)。我们定义了一个相关的指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:</p> <p dir="auto">R SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ) (4)</p> <p dir="auto">R P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ) (5)</p> <p dir="auto">R base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,每个奖励函数都可以“即时”获得。然而,它们并没有考虑早期错误可能导致许多步骤后失败的可能性(图3,4),因此我们将开发一种奖励,可以在整个试验中传播。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">B. 情境移除:SPOT试验奖励</h2><a id="user-content-b-情境移除spot试验奖励" class="anchor" aria-label="Permalink: B. 情境移除:SPOT试验奖励" href="#b-情境移除spot试验奖励"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们是否可以通过一个奖励函数来考虑到导致后续时间步骤失败的动作,同时训练效率比标准的折扣奖励函数R D更高,其中 R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 )?我们的方法是通过情境移除的概念来阻止奖励在失败的动作中传播:其中 R * 可以是任意的即时奖励函数,如第III-A节中的 R SR 或 R P,N 标记着试验的结束,γ 是通常的折扣因子,设置为 γ = 0.65。</p> <p dir="auto">R trial (s t+1 , a t ) = ⎧ ⎪ ⎪ ⎨ ⎪ ⎪ ⎩ 0, 如果 R * (s t+1 , a t ) = 0 2R * (s t+1 , a t ), 如果 t = N R * (s t+1 , a t ) + γR trial (s t+2 , a t+1 ), 否则</p> <p dir="auto">使用 R trial 的效果是未来的奖励只在成功完成子任务的时间步骤中传播。如图4所示,并在图注中描述,情境移除的零奖励切断了包含失败动作的时间步骤中未来奖励的传播。这将学习重点放在了完成任务的短且成功的序列上。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">C. SPOT-Q学习和动态行动空间</h2><a id="user-content-c-spot-q学习和动态行动空间" class="anchor" aria-label="Permalink: C. SPOT-Q学习和动态行动空间" href="#c-spot-q学习和动态行动空间"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">在本节中,我们进一步利用关于环境的先验知识,做出简单但强大的假设,既减少无效尝试,又加快训练速度。具体而言,有许多情况下,某些动作的失败可以从用于Q学习的相同传感器信号中轻松预测出来。为此,我们假设存在一个预测器M (s t , a) → {0, 1},它接受当前状态s t 和一个动作a,并在动作肯定失败时返回0,在其他情况下返回1。这与成功指示器1 a [s t+1 , a t ]略有不同,后者需要动作a t 的结果s t+1 来确定成功或失败。4 使用M,我们定义动态行动空间M t (A): M t (A) = {a ∈ A|M (s t , a) = 1}。(7) 简而言之,M t (A)并不告诉我们a ∈ A是否值得执行,而是告诉我们是否值得探索。给定状态s t,问题变为如何在训练中最有效地利用M t。如果π(s t ) ∈ M t (A),那么π(s t )可以被视为训练目的中的失败,我们可以探索下一个最好的不保证失败的动作。为了形式化这一点,我们引入了SPOT-Q学习,它是一个新的目标值函数,取代了(2):其中π M (s t ) = arg max a∈M t (A) Q(s t , a)。关键是,我们对既有0奖励的掩码动作,又对机器人实际执行的未掩码动作π M (s t )进行反向传播。算法1描述了我们如何通过SPOT-Q和优先经验回放(PER)[40]从过去的示例中进行持续训练,同时执行当前策略。在第IV节中,我们将讨论SPOT-Q如何使我们超越先前的工作,其中类似的启发式方法[1],[41]既无法与SPOT-Q匹敌,也无法考虑我们稍后讨论的安全性考虑。</p> <p dir="auto">y M,t = ⎧ ⎨ ⎩ y t , 如果π(s t+1 ) ∈ M t (A) y t + γQ(s t+1 , π M (s t+1 )) 否则 + R(s t+1 , a t )。(8)</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">IV. 模拟实验</h2><a id="user-content-iv-模拟实验" class="anchor" aria-label="Permalink: IV. 模拟实验" href="#iv-模拟实验"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们的方法在VPG [1]的桌面清理任务以及我们设计的两个具有挑战性的多步骤任务上,提高了性能和动作效率。我们的最佳结果可以在模拟的堆叠和排列任务中实现100%的试验成功,并且我们展示了这些模型成功转移到了真实世界中(详见第五节)。</p> <p dir="auto">为了理解我们方法中每个元素对整体性能的贡献,我们详细介绍了一系列的模拟实验。为此,我们评估了每个奖励函数、SPOT-Q对启发式探索的影响、其他可能的SPOT-Q实现、奖励加权项W,并且我们描述了使用SPOT-Q + R P和SPOT-Q + R trial 的最佳结果。简言之,我们发现情境移除R SR 对我们的性能改进最大,R P 提高了准确性和效率,而R trial 在训练过程中比折扣奖励更高效,同时考虑了动作和结果之间的时间延迟。SPOT-Q 在无遮蔽和仅基本遮蔽的情况下都改善了结果。最后,我们测试了一个网格世界导航任务[42],以展示SPOT框架如何应用于安全强化学习。表格I和III总结了这些结果。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">A. 机器人实现细节</h2><a id="user-content-a-机器人实现细节" class="anchor" aria-label="Permalink: A. 机器人实现细节" href="#a-机器人实现细节"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们考虑一个能够在工作空间中被指定到特定臂部姿势和夹爪状态的机器人。我们的动作空间由三个组成部分组成:动作类型Φ,位置X × Y和角度Θ。代理通过一个固定的RGB-D相机观察环境,我们将其投影,使得z轴与重力方向对齐,如图2所示。我们将空间动作空间离散化为一个边长为0.448m的正方形高度图,具有224×224个坐标(x, y),因此每个像素大约表示4mm²,与VPG[1]相似。角度空间Θ = {2πik | i ∈ [0, k − 1]}同样被离散化为k = 16个箱子。</p> <p dir="auto">动作类型集合包括三个高级运动基元Φ = {抓取,推动,放置}。在我们的实验中,动作的成功与我们夹爪的传感器有关,对于抓取,与推动有关的是物体的扰动,对于放置,与之相关的是堆叠高度或行长度的增加。</p> <p dir="auto">传统的轨迹规划器在机器人上执行每个动作a = (φ, x, y, θ) ∈ A。对于抓取和放置,每个动作都会将机器人移动到(x, y),夹爪角度为θ ∈ Θ,并分别关闭或打开夹爪。推动动作从(x, y)处开始,夹爪关闭,并沿着角度θ水平移动固定距离。图2可视化了我们的整体算法,包括动作空间和相应的Q值。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">B. 评估指标</h2><a id="user-content-b-评估指标" class="anchor" aria-label="Permalink: B. 评估指标" href="#b-评估指标"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们根据VPG [1]中的指标在随机测试案例中评估我们的算法。理想动作效率为100%,计算方法是理想动作数除以实际动作数;对于抓取任务,定义为每个物体1个动作;对于涉及放置的任务,定义为每个物体2个动作。这意味着对于高度为4的堆叠任务,总共需要6个动作,因为只有3个物体需要移动;对于将两个方块放置在两个端点之间的行任务,总共需要4个动作。我们通过100次新的随机物体位置的试验来验证模拟结果两次。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">C. 算法剖析</h2><a id="user-content-c-算法剖析" class="anchor" aria-label="Permalink: C. 算法剖析" href="#c-算法剖析"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们在表格I中比较了底层算法的每个组成部分的贡献,并与基准方法进行了对比,除了在文本中提供的清理任务。除非另有说明,我们将行和堆栈汇总为一个组合平均值。</p> <p dir="auto">清理20个玩具:我们通过VPG [1]中的主要模拟实验建立了一个基准,其中必须抓取20个形状各异的玩具以清理机器人工作区。SPOT框架与VPG [1]相匹配,任务完成率达到100%,并将抓取成功率从68%提高到84%,将动作效率从64%提高到74%。</p> <p dir="auto">清理具有挑战性的玩具:第二个基准场景是来自VPG [1]的11个具有挑战性的玩具布局,其中玩具被放置在紧密堆放的配置中。每个案例运行10次,SPOT框架在7/11个案例中完全清除,而VPG [1]中只有5/11个案例被清除;所有110次运行中的清除率从84%提高到95%。在这种情况下,效率下降了,从60%降至38%,这是由于解决困难案例的数量增加,因为分离块可能需要多次尝试。</p> <p dir="auto">奖励函数:R base ,R SR ,R P 和R trial 逐步扩展彼此(第III-A节,III-B节)。除非另有说明,本研究中禁用所有屏蔽操作。</p> <p dir="auto">R D s.t. R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 )是折扣奖励的最常见方法。当在最后一个时间步骤使用R P 进行评估,并且γ = 0.9时,抓取和放置动作的成功率分别为5%和45%。创建2-3层的堆栈,并且通过屏蔽操作改善了性能(32%,48%)。然而,这种方法非常低效,在20,000个动作中没有4层的堆栈。也就是说,如果能够进行数量级更多的训练,我们预计会收敛[43]。</p> <p dir="auto">R base 对于推动和抓取是有效的[1],但对于多步任务来说是不够的,在最佳情况下,只能完成13%的行和堆栈,每个试验大约需要200多个动作。在另一种情况下,它经常在同一位置反复循环抓取然后放置相同的物体,导致99%的抓取成功率,但总体上没有成功的试验,即使在手动场景重置之后也是如此。我们不希望R base 在这些任务上收敛,因为没有进度信号表明,例如,从现有堆栈的顶部抓取是一个不好的选择。</p> <p dir="auto">R SR 立即解决了进度反转问题,因为此类动作不会获得奖励;因此,我们看到试验成功率从13%增加到94%,效率增加了一个数量级,达到23%,适用于两个任务,即每个试验大约需要22个动作。</p> <p dir="auto">R P 导致综合试验成功率提高到97%,效率提高到45%,即每个试验大约需要20个动作。这通过将定量的进度量纳入其中来改进纯情境消除。</p> <p dir="auto">R trial 在此测试中使用R P 作为即时奖励函数,堆栈的平均试验成功率为96%,效率为31%,即每个试验大约需要19个动作。然而,对于行,性能显著下降,试验成功率降至80%,动作效率仅为16%,即每个试验大约需要25个动作。这些值表明R trial 在R D 的低效性和R P 中更即时的进度指标之间进行了权衡,因为最近的值可以用于填充没有进度反馈的动作。我们还注意到,一旦添加了SPOT-Q,此奖励是堆栈中最好的奖励,并且在整体上是第二好的奖励,如下所示。</p> <p dir="auto">SPOT-Q:VPG [1]评估了指定要探索的确切位置的启发式方法,并发现它导致性能下降。QT-Opt [41]中的类似方法在训练过程中逐渐淘汰,表明它们在改善训练结果方面没有贡献。相比之下,SPOT-Q始终处于启用状态,并排除了零奖励可能性的区域,同时保持了其他感兴趣区域的开放性。那么,这种启发式设计的差异是否重要呢?</p> <p dir="auto">“屏蔽但没有SPOT-Q”测试禁用了算法1中的if语句,以模拟一个典型的启发式方法,其中将探索定向到特定区域而没有零奖励指导。与没有屏蔽的情况相比,“屏蔽但没有SPOT-Q”完成了95%的试验,而没有屏蔽的情况下为88%,有SPOT-Q的情况下为99%;动作效率的结果更加明显,分别为37%、23%和50%。这些结果和第IV-D节表明,SPOT-Q在整个训练和测试过程中都起作用,几乎不需要调整,因此我们得出结论,SPOT-Q提高了从启发式数据中学习的效率。</p> <p dir="auto">SPOT-Q的替代方法:我们评估了SPOT-Q的两种替代方法(eq. 8,算法1),其中所有屏蔽像素都进行了0奖励反向传播,并且在实际执行的动作上应用了屏蔽分数的(1)总和和(2)平均值的损失。在这两种情况下,梯度爆炸,算法无法收敛。只有SPOT-Q能够有效地提高收敛性。</p> <p dir="auto">奖励加权:SPOT-Q + R P ,其中W push = 0.1,在99%的试验中成功,但当W push = 1.0时,只有27%的成功率。在没有屏蔽或SPOT-Q的情况下,图4中的加权对R trial 的影响实现了97%的堆栈成功和38%的动作效率,但为了保持一致性,我们保持所有加权值不变。这表明W (3) 对于有效的训练很重要。</p> <p dir="auto">SPOT-Q + R P :这种配置具有最佳的整体模拟性能,试验成功率为99%,效率为50%,即每个试验大约需要10个动作。它也是最好的模拟行模型,在一个测试中有98%的试验成功率,在第二个测试中有100%的成功率,动作效率为62-68%。</p> <p dir="auto">SPOT-Q + R trial :这是最好的堆栈模型,在两个测试案例中都完成了100%,效率为45-51%。整体性能是第二好的,试验成功率为97%,效率为37%,即每个试验大约需要14个动作。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">D. 安全性和领域泛化</h2><a id="user-content-d-安全性和领域泛化" class="anchor" aria-label="Permalink: D. 安全性和领域泛化" href="#d-安全性和领域泛化"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">为了展示SPOT框架的广泛适用性,我们在简单但具有挑战性的Safety Grid World [42](图5)环境上进行了评估,这是一种广泛用于评估强化学习算法的环境类型[32],[39]。在这个环境中,红色机器人必须向前移动或转向,以在不进入熔岩的情况下向绿色方块导航。如果我们只有一个真实的机器人在这个世界中进行学习,标准的深度强化学习(DRL)将会非常不安全,但是SPOT框架可以让机器人安全地探索空间。</p> <p dir="auto">正如表III所示,所有改进都与我们更现实的任务一致。我们首先使用Rainbow [35],一种基于Q学习的DRL方法,它在500 k次动作中只能完成最多12%的试验,效率为12%。然后我们进行了一项小型消融研究,逐步添加了Masking、SPOT-Q和R P到Rainbow;分别完成了1000次测试试验的96.9%、95.5%和99.9%;平均效率分别为75%、73%和62%;完成30次验证试验的平均动作次数分别为123 k、113 k和70 k。所有使用掩码的失败都没有进入熔岩,它们达到了100次动作的限制。</p> <p dir="auto">这些结果与我们更现实的实验一致,展示了SPOT框架如何在完全不同的场景中泛化,并说明了SPOT框架在安全探索中的应用。接下来,我们将展示SPOT框架如何直接将在仿真中获得的知识应用于真实机器人任务。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">V. REAL WORLD EXPERIMENTS (真实世界实验)</h2><a id="user-content-v-real-world-experiments-真实世界实验" class="anchor" aria-label="Permalink: V. REAL WORLD EXPERIMENTS (真实世界实验)" href="#v-real-world-experiments-真实世界实验"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">最后,我们对SPOT-Q在真实机器人任务上的表现进行了研究,包括从头开始的训练和模拟到真实的迁移。在这两种情况下,性能与在模拟中实现的性能大致相当,这显示了我们的方法在高效和有效的强化学习方面的优势。我们使用了[29]和[44]中描述的设置,包括通用机器人UR5、Robotiq 2指夹具和Primesense Carmine RGB-D相机;除了机械臂外,其他部分与我们的模拟不同。其他实现细节如IV-A节所述,并且结果见表II。</p> <p dir="auto">真实推动和抓取:我们在真实世界中从头开始训练了基准推动和抓取任务,在20个物体上进行了测试,结果显示100%的测试通过率,75%的抓取成功率和1k次动作中的75%效率;这些结果与VPG [1]在2.5k次动作中的表现相当。模拟到真实的迁移在这个任务中没有成功。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">模拟到真实环境与真实环境堆叠比较</h2><a id="user-content-模拟到真实环境与真实环境堆叠比较" class="anchor" aria-label="Permalink: 模拟到真实环境与真实环境堆叠比较" href="#模拟到真实环境与真实环境堆叠比较"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">在模拟环境中训练后,我们直接将模型加载到真实机器人上执行。令人惊讶的是,所有经过测试的模拟到真实环境堆叠模型都完成了100%的试验,表现优于在真实机器人上训练的模型,后者在82%的试验中成功(图6,表II)。R P 和 R trial 的行动效率相等,均为61%,而没有 SPOT-Q 或掩码的 R P 版本的效率稍低,为51%。这一点尤其令人印象深刻,考虑到我们的场景暴露在变化的阳光下。直观上,这些结果部分是由于在堆叠和行制作中使用了深度高度图作为输入。</p> <p dir="auto">模拟到真实环境的行制作:我们的 R P + SPOT-Q 模拟到真实环境的行制作模型在100%的尝试中都能成功创建行,效率为59%。R trial + SPOT-Q 和没有掩码的 R P 的表现稍差,都有90%的试验完成,效率分别为83%和58%。没有掩码的 R P 的高效率是因为当任务变得无法恢复,例如一个方块从工作区域掉落时,我们会立即结束真实试验。在这种情况下,我们只评估模拟到真实的转移,因为训练进展比堆叠任务慢得多。</p> <p dir="auto">我们预计基于方块的任务能够转移,因为网络主要依赖深度图像,这在模拟和真实数据之间更加一致。这可能合理地解释了为什么推动和抓取不能转移,这个问题可以通过未来的工作中使用域自适应等方法来缓解[24],[25]。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">VI. 结论</h2><a id="user-content-vi-结论" class="anchor" aria-label="Permalink: VI. 结论" href="#vi-结论"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们已经证明了SPOT框架对于训练长期任务是有效的。据我们所知,这是首次将强化学习成功应用于长期多步任务,如堆叠方块和创建带有进度逆转考虑的行。SPOT框架可以量化代理在多步任务中的进展,同时提供零奖励指导、掩码动作空间和情境移除。它能够快速学习从模拟到真实世界的策略。我们发现这些方法是实现真实堆叠任务和行制作任务的100%完成率所必需的。</p> <p dir="auto">SPOT的主要限制是虽然中间奖励可能稀疏,但仍然是必要的。未来的研究应该探索从数据中学习任务结构的方法,其中包括情境移除。此外,动作空间掩码M目前是手动设计的;这个掩码和较低层次的开环动作也可以进行学习。另一个需要研究的课题是在推动和抓取任务与堆叠和行任务之间成功的模拟到真实转移的差异。最后,我们希望将我们的方法应用于更具挑战性的任务。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">致谢</h2><a id="user-content-致谢" class="anchor" aria-label="Permalink: 致谢" href="#致谢"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们要特别感谢Adit Murali对安全网格世界的整合;感谢Molly O'Brien提供宝贵的讨论、反馈和编辑意见;感谢Corinne Hundt为“好机器人!”标题的撰写;感谢Michelle Hundt、Thomas Hundt和Ian Harkins的编辑工作;感谢所有阅读、审阅和提供反馈意见的人;感谢VPG[1]的作者们发布他们的代码。</p> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">本地PDF全文总结示例</h2><a id="user-content-本地pdf全文总结示例" class="anchor" aria-label="Permalink: 本地PDF全文总结示例" href="#本地pdf全文总结示例"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>查看本地PDF全文总结示例示例</b></code></summary> <div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">强化学习用于长期任务的学习</h1><a id="user-content-强化学习用于长期任务的学习" class="anchor" aria-label="Permalink: 强化学习用于长期任务的学习" href="#强化学习用于长期任务的学习"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Reinforcement learning for long-horizon tasks</h2><a id="user-content-reinforcement-learning-for-long-horizon-tasks" class="anchor" aria-label="Permalink: Reinforcement learning for long-horizon tasks" href="#reinforcement-learning-for-long-horizon-tasks"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Abstract (摘要)</h2><a id="user-content-abstract-摘要" class="anchor" aria-label="Permalink: Abstract (摘要)" href="#abstract-摘要"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本文介绍了一种针对长期任务的强化学习算法,该算法在探索过程中避免了浪费时间在无效路径上,并且能够有效地学习逆转之前的进展。我们开发了SPOT框架,该框架在行动安全区域内进行探索,学习有关不安全区域的信息,而无需真正探索这些区域,并且优先考虑逆转之前的经验,以实现高效学习。在模拟试验中,SPOT框架成功完成了各种任务,将基准试验的成功率从13%提高到了100%(当堆叠4个方块时),从13%提高到了99%(当创建4个方块的行时),以及从84%提高到了95%(当清除以对抗模式排列的玩具时)。与每次试验的行动次数相比,效率通常提高了30%或更多,而训练时间只需1-20 k次行动,具体取决于任务的复杂程度。此外,我们还展示了直接从模拟到真实环境的迁移能力。通过在真实机器人上直接加载经过模拟训练的模型,无需进行额外的真实世界微调,我们能够在100%的试验中成功堆叠真实方块,效率为61%,并在100%的试验中成功创建真实行,效率为59%。据我们所知,这是首次将成功的模拟到真实迁移应用于长期多步骤任务(如堆叠方块和创建行)并考虑到进展逆转的强化学习实例。代码可在<a href="https://github.com/jhulcsr/good_robot%E4%B8%8A%E8%8E%B7%E5%BE%97%E3%80%82%E7%B4%A2%E5%BC%95%E8%AF%8D-%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E5%9C%A8%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BA%94%E7%94%A8%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%EF%BC%8C%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9C%A8%E6%8A%93%E5%8F%96%E5%92%8C%E6%93%8D%E7%BA%B5%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%EF%BC%8C%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E3%80%82">https://github.com/jhulcsr/good_robot上获得。索引词-计算机视觉在其他机器人应用中的应用,深度学习在抓取和操纵中的应用,强化学习。</a></p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">"Good Robot!": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer</h2><a id="user-content-good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer" class="anchor" aria-label="Permalink: "Good Robot!": Efficient Reinforcement Learning for Multi-Step Visual Tasks with Sim to Real Transfer" href="#good-robot-efficient-reinforcement-learning-for-multi-step-visual-tasks-with-sim-to-real-transfer"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节介绍了一种名为"Schedule for Positive Task (SPOT)"的框架,用于在多步骤视觉任务中高效地进行强化学习。作者观察到,强化学习在探索行为时往往浪费了大量时间,而这些行为在最好的情况下也是无效的。为了解决这个问题,作者提出了SPOT框架,该框架将常识约束融入到深度强化学习中,从而显著加速学习过程并提高任务效率。</p> <p dir="auto">SPOT框架受到了训练宠物的有效方法的启发,即"正向条件训练"。作者将这种方法应用于强化学习中,通过奖励部分符合期望行为的行为,并在逆行为发生时立即停止奖励,从而鼓励探索和快速改进。作者的奖励函数和SPOT-Q学习方法也被设计成不对逆行为进行奖励或惩罚。</p> <p dir="auto">在多步骤任务中,逆行为的复杂性各不相同。对于一些简单的任务,如将第一个方块叠放在另一个方块上,恢复到初始状态只需要几个动作。但是,一旦存在一个由n个方块组成的堆栈,即使成功抓取一个方块,整个堆栈也可能被打翻,导致之前的所有动作都被逆转,恢复的复杂度将是Ω(n)。这种更复杂的逆行为对于机器人的多步骤任务强化学习来说是一个具有挑战性的问题,而作者的工作提供了一种高效解决这种情况的方法。</p> <p dir="auto">本文的贡献包括:</p> <ol dir="auto"> <li>SPOT框架,用于强化学习多步骤任务,在模拟环境和真实环境中都能有效训练。</li> <li>SPOT-Q学习方法,一种安全高效的训练方法,通过运行时的探索和从过去经验中生成额外的训练样本来提高效率。</li> <li>在模拟环境和真实环境中实现了零样本领域转移,以及对硬件和场景位置变化的鲁棒性。</li> <li>通过消除逆行为,提高了进展的效率;通过引入进展度量,提高了效率;通过试验奖励改进了折扣方法,但在效率和稀疏奖励支持之间存在权衡。</li> </ol> <p dir="auto">总之,本文提出的SPOT框架在多步骤视觉任务的强化学习中取得了显著的进展,提高了学习效率和任务效果。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">II. RELATED WORK (相关工作)</h2><a id="user-content-ii-related-work-相关工作" class="anchor" aria-label="Permalink: II. RELATED WORK (相关工作)" href="#ii-related-work-相关工作"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节介绍了与本研究相关的工作。首先,深度神经网络(DNNs)的应用使得机器人操作中的原始传感器数据得以利用。一些方法中,DNN的输出直接对应于运动指令。而其他高级方法则假设了机器人控制的简单模型,并专注于边界框或姿态检测,以进行下游的抓取规划。RGB-D传感器可以提供关于工作空间的物理信息。目标中心技能学习可以有效且广泛地推广,例如通过将模拟堆叠分类为稳定或可能倒塌的方法。类似地,通过预测推动动作的结果来发展物理直觉的方法也有。本研究与这些方法的不同之处在于,在多步骤任务的进展过程中,同时发展视觉理解和物理直觉。</p> <p dir="auto">抓取是一个特别活跃的研究领域。DexNet学习了大量的自顶向下抓取的深度图像,并在抓取新对象时表现出极好的性能,但没有考虑长期任务。6-DOF Grasp-Net使用模拟抓取数据来推广到新对象,并已扩展到处理杂乱环境中新对象的可靠抓取。</p> <p dir="auto">强化学习(DRL)在机器人操作中越来越复杂的任务中证明了其有效性。QT-Opt从真实机器人上进行了数十万次的实际抓取尝试中学习了操作技能。领域适应,例如在模拟中应用随机纹理,也可以增强从模拟到真实世界的迁移。其他方法专注于从模拟机器人到真实机器人的视觉运动技能迁移。本研究通过学习像素级成功概率图,遵循先前的工作,通过指导低级控制器执行动作而不是直接回归力矩向量。</p> <p dir="auto">在强化学习中,多步骤任务的稀疏奖励是一个特殊的挑战,因为解决方案不太可能通过随机探索来发现。如果有可用的演示,它可以是引导探索的有效方法。多步骤任务可以分为包含草图的模块化子任务,而[31]则具有机器人特定和任务特定的学习模块。</p> <p dir="auto">在许多现实世界的环境中,安全性对于强化学习至关重要。第四节的初步实验表明,SPOT-Q为将安全性纳入基于Q-Learning的通用算法提供了一种方法。</p> <p dir="auto">我们在第四和第五节将SPOT框架与VPG进行了比较。VPG是一种基于强化学习的桌面清理任务的方法,可以在单个机器人上的几个小时内通过图像进行训练。VPG通常能够完成对抗性场景,例如首先将一组紧密堆叠的块推开,然后抓取现在分离的对象。最近的一些相关工作涉及具有多个动作的任务,其中[36]将一个块放在另一个块上,[37]将一块毛巾放在杆上,[38]清理一个垃圾箱,但前两者都不是长期任务,并且从未考虑到进展的逆转(图3)。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">III. APPROACH (方法)</h2><a id="user-content-iii-approach-方法" class="anchor" aria-label="Permalink: III. APPROACH (方法)" href="#iii-approach-方法"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们研究了长期任务中稀疏且近似的任务进展概念。通过以下四个措施,可以提高学习的效率:将这些问题结构化以捕捉数据的不变性属性,使用传统算法在最有效的地方部署,确保奖励不会通过失败的动作传播,引入一种可以消除不必要探索的算法。我们将在基于视觉的机器人操作中的组装问题的背景下展示我们的方法。</p> <p dir="auto">我们将问题构建为一个马尔可夫决策过程 (S, A, P, R),其中状态空间为 S,动作空间为 A,转移概率函数为 P: S × S × A → R,奖励函数为 R: S × A → R。这包括了一个简化的假设,将传感器观测和状态等同起来。在时间步 t,代理观察到状态 s_t,并根据其策略 π: S → A 选择动作 a_t。该动作导致新的状态 s_t+1 的概率为 P(s_t+1 | s_t, a_t)。与 VPG [1] 类似,我们使用 Q-learning 来生成选择动作的确定性策略。函数 Q: S × A → R 估计了从给定状态选择动作的预期奖励 R,即动作的“质量”。我们的策略 π 如下选择动作 a_t: π(s_t) = arg max a∈A Q(s_t, a) (1)</p> <p dir="auto">因此,训练的目标是学习一个最大化奖励 R 的 Q。这通过迭代地最小化 |Q(s_t, a_t) - y_t| 来实现,其中目标值 y_t 为: y_t = R(s_t+1, a_t) + γQ(s_t+1, π(s_t+1)) (2)</p> <p dir="auto">Q-learning 是强化学习中的一种基本算法,但在应用于机器人等动作空间和试验成本极高的领域时,存在一些关键限制,高效的探索甚至可能是安全关键的。它还高度依赖于奖励函数 R,其定义可能导致学习效率相差几个数量级,我们在第 IV-C 节中展示了这一点,因此我们首先介绍了奖励塑形的方法。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">A. Reward Shaping (奖励塑造)</h2><a id="user-content-a-reward-shaping-奖励塑造" class="anchor" aria-label="Permalink: A. Reward Shaping (奖励塑造)" href="#a-reward-shaping-奖励塑造"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">奖励塑造是一种优化奖励R的有效技术,用于高效训练策略[39]和它们的神经网络。在这里,我们提出了几个奖励函数以供后续比较(第IV-C节),这些函数建立了一个通用的奖励塑造形式,有助于在广泛的新任务上进行高效学习,从而减少成功奖励计划的临时性质。</p> <p dir="auto">假设每个动作a与一个子任务φ ∈ Φ相关联,并且我们有一个指示函数1 a [s t+1 , a t ],如果动作a t 在φ上成功,则等于1,否则等于0。与VPG [1]类似,我们的基准奖励遵循这个原则,并包括一个子任务加权函数W : Φ → R,根据其主观难度和重要性进行加权:</p> <p dir="auto">R base (s t+1 , a t ) = W (φ t )1 a [s t+1 , a t ].</p> <p dir="auto">接下来,我们定义了一个稀疏且近似的任务进展函数P : S → R ∈ [0, 1],表示朝着整体目标的比例进展,其中P(s t ) = 1表示任务完成。与我们在Spot the dog的故事中一样(第I节),进展的逆转导致我们对代理进行情境移除(SR),并在训练过程中对环境进行物理重置(图3)。我们定义了一个相关的指示函数1 SR [s t , s t+1 ],如果P(s t+1 ) ≥ P(s t ),则等于1,否则等于0。这些导致了新的奖励函数:</p> <p dir="auto">R SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ).</p> <p dir="auto">R P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ).</p> <p dir="auto">R base,R SR和R P 的一个优点是,在一个试验中的两个状态转换后,它们都可以“即时”获得。然而,它们没有考虑到早期错误可能导致很多步骤后的失败的可能性(图3, 4),因此我们将开发一种奖励,可以在整个试验中传播。</p> <p dir="auto">W φ t ∈ {W push =0.1, W grasp =1, W place =1}.</p> <p dir="auto">W φ t ∈ {W push = .5, W grasp = 1, W place =1.25} for chart visibility.</p> <p dir="auto">R trial at a 14 is 2 × R P.</p> <p dir="auto">R SR (s t+1 , a t ) = 1 SR [s t , s t+1 ]R base (s t+1 , a t ).</p> <p dir="auto">R P (s t+1 , a t ) = P(s t+1 )R SR (s t+1 , a t ).</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">B. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)</h2><a id="user-content-b-situation-removal-spot-trial-reward-情境移除spot试验奖励" class="anchor" aria-label="Permalink: B. Situation Removal: SPOT Trial Reward (情境移除:SPOT试验奖励)" href="#b-situation-removal-spot-trial-reward-情境移除spot试验奖励"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节讨论了在训练效率高于标准折扣奖励R_D(s_t+1, a_t)= γ R_D(s_t+2, a_t+1)的情况下,奖励函数是否能够考虑到导致后续时间步骤失败的动作。我们的方法是通过情境移除的概念来阻止奖励在失败的动作中传播,其中R*可以是任意的即时奖励函数,例如来自第III-A节的R_SR或R_P,N标记了试验的结束,γ是通常的折扣因子,设置为γ = 0.65。</p> <p dir="auto">使用R_trial的效果是,未来的奖励只在成功完成子任务的时间步骤中传播。如图4所示,并在说明中描述,情境移除的零奖励切断了包含失败动作的时间步骤中未来奖励的传播。这将学习集中在短且成功的序列上,以完成任务。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">C. SPOT-Q学习和动态行动空间</h2><a id="user-content-c-spot-q学习和动态行动空间-1" class="anchor" aria-label="Permalink: C. SPOT-Q学习和动态行动空间" href="#c-spot-q学习和动态行动空间-1"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节中,我们进一步利用关于环境的先验知识,做出简单但强大的假设,既减少无效尝试,又加速训练。具体而言,有许多情况下,某些动作失败可以从用于Q学习的相同传感器信号中轻松预测出来。为此,我们假设存在一个神谕M(s_t, a) → {0, 1},它接受当前状态s_t和一个动作a,并在动作肯定会失败时返回0,否则返回1。这与成功指示器1_a[s_t+1, a_t]略有不同,后者需要动作a_t的结果s_t+1来确定成功或失败。使用M,我们定义动态行动空间M_t(A): M_t(A) = {a ∈ A|M(s_t, a) = 1}。(7)</p> <p dir="auto">简而言之,M_t(A)并不告诉我们a ∈ A是否值得执行,而是告诉我们是否值得探索。给定状态s_t,问题变成如何在训练中最有效地利用M_t。如果π(s_t) ∈ M_t(A),那么π(s_t)可以被视为学习目的中的失败,我们可以探索下一个最有可能不会失败的动作。为了形式化这一点,我们引入了SPOT-Q学习,它是一个新的目标值函数,取代了(2):其中π_M(s_t) = arg max a∈M_t(A) Q(s_t, a)。关键是,我们对既有0奖励的掩码动作,也对机器人实际执行的未掩码动作π_M(s_t)进行反向传播。算法1描述了我们如何通过SPOT-Q和优先经验回放(PER)[40]从过去的示例中持续进行训练,同时还展示了当前策略的执行过程。在第四节中,我们将讨论SPOT-Q如何超越之前的工作,其中类似的启发式方法[1],[41]既无法与SPOT-Q匹敌,也无法考虑我们稍后讨论的安全性考虑。</p> <p dir="auto">y_M,t = ⎧ ⎨ ⎩ y_t,如果π(s_t+1) ∈ M_t(A) y_t + γQ(s_t+1, π_M(s_t+1)),否则 + R(s_t+1, a_t)。(8)</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">IV. SIMULATION EXPERIMENTS</h2><a id="user-content-iv-simulation-experiments" class="anchor" aria-label="Permalink: IV. SIMULATION EXPERIMENTS" href="#iv-simulation-experiments"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节介绍了一系列的模拟实验,以了解我们方法中每个元素对整体性能的贡献。我们评估了每个奖励函数、SPOT-Q对启发式探索的影响、其他可能的SPOT-Q实现、奖励加权项W,并描述了我们在SPOT-Q + R_P和SPOT-Q + R_trial上取得的最佳结果。简而言之,我们发现情境移除R_SR对我们的性能改进最大,R_P提高了准确性和效率,而R_trial在考虑行动和后果之间的时间延迟的同时,训练效果更好。SPOT-Q相对于无掩码和基本掩码都提高了结果。最后,我们测试了一个网格世界导航任务[42],以展示SPOT框架如何应用于安全强化学习。表I和表III总结了这些结果。</p> <p dir="auto">(Our method improves performance and action efficiency over the state of the art on the table clearing task from VPG [1], as well as on two challenging multi-step tasks of our design: creating a stack of four blocks and creating a horizontal row of four blocks. Our best results can achieve 100% trial success on the simulated stacking and row tasks, models which successfully transfer to the real world as we show in Section V.)</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">A. Robot Implementation Details (机器人实施细节)</h2><a id="user-content-a-robot-implementation-details-机器人实施细节" class="anchor" aria-label="Permalink: A. Robot Implementation Details (机器人实施细节)" href="#a-robot-implementation-details-机器人实施细节"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们考虑一个能够在其工作空间内被指定到特定的臂部姿势和夹持器状态的机器人。我们的动作空间由三个组成部分组成:动作类型Φ,位置X × Y和角度Θ。代理通过一个固定的RGB-D相机观察环境,我们将其投影,使得z轴与重力方向对齐,如图2所示。我们将空间动作空间离散化为一个边长为0.448m的正方形高度图,具有224×224个坐标(x, y),因此每个像素大约表示4mm²,根据VPG [1]。角度空间Θ = {2πik | i ∈ [0, k-1]}同样被离散化为k = 16个bin。</p> <p dir="auto">动作类型集合包括三个高级运动原语Φ = {抓取,推动,放置}。在我们的实验中,动作的成功与我们夹持器的传感器对于抓取,物体的扰动对于推动,以及堆叠高度或行长度的增加对于放置有关。</p> <p dir="auto">传统的轨迹规划器在机器人上执行每个动作a = (φ, x, y, θ) ∈ A。对于抓取和放置,每个动作将移动到(x, y)并具有夹持器角度θ ∈ Θ,并分别关闭或打开夹持器。推动动作从(x, y)处的闭合夹持器开始,并沿着角度θ水平移动固定距离。图2可视化了我们的整体算法,包括动作空间和相应的Q值。</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">B. Evaluation Metrics (评估指标)</h2><a id="user-content-b-evaluation-metrics-评估指标" class="anchor" aria-label="Permalink: B. Evaluation Metrics (评估指标)" href="#b-evaluation-metrics-评估指标"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">我们按照VPG [1]中的指标,在随机测试用例中评估我们的算法。理想的动作效率为100%,计算方法是理想动作数除以实际动作数。对于抓取任务,每个物体只需要1个动作;对于涉及放置的任务,每个物体需要2个动作。例如,对于高度为4的堆叠任务,只需要移动3个物体,因此总共需要6个动作;对于将两个块放置在两个端点之间的行任务,总共需要4个动作。我们通过100次随机的新物体位置试验两次验证模拟结果。</p> <p dir="auto">[1] VPG: Virtual-to-Physical Robot Grasping.</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">C. 算法剖析</h2><a id="user-content-c-算法剖析-1" class="anchor" aria-label="Permalink: C. 算法剖析" href="#c-算法剖析-1"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">本节通过表格I中的对比,比较了底层算法的每个组成部分与基准方法的贡献。除了在文本中提供的清理任务外,我们将行和堆栈总结为一个平均值。</p> <ul dir="auto"> <li> <p dir="auto">清理20个玩具:我们通过在VPG [1]中找到的主要模拟实验建立了一个基准,其中必须抓取20个形状各异的玩具以清理机器人工作区。SPOT框架与VPG [1]完全匹配,任务完成率从68%提高到84%,抓取成功率从64%提高到74%。</p> </li> <li> <p dir="auto">对抗性清理玩具:第二个基准场景是来自VPG [1]的11个具有挑战性的对抗性布局,其中玩具被放置在紧密堆积的配置中。每个案例运行10次,SPOT框架完全清除了7/11个案例,而VPG [1]中只有5/11个案例;所有110次运行的清除率从84%提高到95%。在这种情况下,效率从60%下降到38%,这是由于解决困难案例的数量增加,因为分离块可能需要多次尝试。</p> </li> <li> <p dir="auto">奖励函数:R base,R SR,R P和R trial逐步扩展彼此(第III-A节,III-B节)。除非另有说明,否则本研究中禁用所有掩码。</p> </li> <li> <p dir="auto">R D ,即 R D (s t+1 , a t ) = γ R D (s t+2 , a t+1 ),是一种常规的试验奖励方法。当使用 R P 在最后一个时间步骤和 γ = 0.9 进行评估时,抓取和放置动作的成功率分别为5%和45%。创建2-3层的堆栈,并且使用掩码后性能提高(32%,48%)。然而,这种方法非常低效,20,000次动作中没有4层的堆栈。尽管如此,如果能够进行数量级更多的训练,我们预计会收敛[43]。</p> </li> <li> <p dir="auto">R base 对于推动和抓取是有效的[1],但对于多步任务来说不够。在最佳情况下,只能完成13%的行和堆栈,每次试验需要约200次动作。在另一种情况下,它经常反复推动和放置同一个物体,导致99%的抓取成功率,但整体上没有成功的试验,即使手动重置场景。我们不希望R base在这些任务上收敛,因为没有进展信号表明从现有堆栈的顶部抓取是一个不好的选择。</p> </li> <li> <p dir="auto">R SR 立即解决了进展反转问题,因为这样的动作得到0的奖励;因此,我们看到试验成功率从13%增加到94%,效率增加一个数量级,达到23%,适用于两个任务,即每次试验大约需要22次动作。</p> </li> <li> <p dir="auto">R P 导致试验成功率提高到97%,效率提高到45%,即每次试验大约需要20次动作。通过将定量的进展量纳入其中,这种方法改进了纯粹的情境消除。</p> </li> <li> <p dir="auto">R trial 在这个测试中将 R P 作为即时奖励函数,并且堆栈的平均试验成功率为96%,效率为31%,即每次试验大约需要19次动作。然而,对于行,性能显著下降,试验成功率下降到80%,动作效率仅为16%,即每次试验大约需要25次动作。这些值表明 R trial 在 R D 的低效和 R P 中更即时的进展度之间进行了权衡,因为最近的值可以用来填充没有进展反馈的动作。我们还注意到,一旦添加了SPOT-Q,这个奖励是堆栈中最好的,总体上是第二好的,如下所示。</p> </li> <li> <p dir="auto">SPOT-Q:VPG [1]评估了指定要探索的确切位置的启发式方法,发现它导致性能更差。在QT-Opt [41]中,类似的方法在训练过程中被淘汰,表明它们对改善训练结果没有贡献。相比之下,SPOT-Q始终处于启用状态,并且剔除了没有成功可能性的区域,而其他感兴趣的区域仍然可以进行探索。那么,这种启发式设计的差异重要吗?</p> </li> <li> <p dir="auto">“掩码但没有SPOT-Q”测试禁用了算法1中的if语句,以模拟典型的启发式方法,其中探索被定向到特定区域而没有零奖励的指导。与无掩码和无SPOT-Q相比,“掩码但没有SPOT-Q”完成了95%的试验,动作效率分别为37%、23%和50%。这些结果和第IV-D节表明,SPOT-Q在整个训练和测试过程中都能有效地工作,几乎不需要调整,因此我们得出结论,SPOT-Q提高了从启发式数据中学习的效率。</p> </li> <li> <p dir="auto">SPOT-Q的替代方案:我们评估了SPOT-Q的两种替代方案(eq. 8,算法1),其中对所有掩码像素执行0奖励反向传播,并在实际执行的动作中对掩码得分的(1)总和和(2)平均值应用损失。在这两种情况下,梯度爆炸,算法无法收敛。只有SPOT-Q能够有效地提高收敛速度。</p> </li> <li> <p dir="auto">奖励加权:SPOT-Q + R P,其中 W push = 0.1,在99%的试验中成功,但当 W push = 1.0 时,成功率只有27%。在没有掩码或SPOT-Q的情况下,图4中的加权对 R trial 的影响达到了97%的堆栈成功率和38%的动作效率,但为了保持一致性,我们将所有加权保持不变。这表明 W (3) 对于高效的训练很重要。</p> </li> <li> <p dir="auto">SPOT-Q + R P:这种配置具有最佳的整体模拟性能,试验成功率为99%,效率为50%,即每次试验大约需要10次动作。它也是最好的模拟行模型,在一个测试中的试验成功率为98%,在第二个测试中为100%,动作效率为62-68%。</p> </li> <li> <p dir="auto">SPOT-Q + R trial:这是最好的堆栈模型,在两个测试案例中都完成了100%,效率为45-51%。总体性能是第二好的,试验成功率为97%,效率为37%,即每次试验大约需要14次动作。</p> </li> </ul> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">全文总结示例</h2><a id="user-content-全文总结示例" class="anchor" aria-label="Permalink: 全文总结示例" href="#全文总结示例"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>查看全文总结结果</b></code></summary> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Paper:1</h2><a id="user-content-paper1" class="anchor" aria-label="Permalink: Paper:1" href="#paper1"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ol dir="auto"> <li> <p dir="auto">Title: Diffusion Policy: Visuomotor Policy Learning via Action Diffusion 中文标题: 通过行为扩散的视觉运动策略学习</p> </li> <li> <p dir="auto">Authors: Haonan Lu, Yufeng Yuan, Daohua Xie, Kai Wang, Baoxiong Jia, Shuaijun Chen</p> </li> <li> <p dir="auto">Affiliation: 中南大学</p> </li> <li> <p dir="auto">Keywords: Diffusion Policy, Visuomotor Policy, robot learning, denoising diffusion process</p> </li> <li> <p dir="auto">Urls: <a href="http://arxiv.org/abs/2303.04137v1" rel="nofollow">http://arxiv.org/abs/2303.04137v1</a>, Github: None</p> </li> <li> <p dir="auto">Summary:</p> </li> </ol> <p dir="auto">(1): 本文研究的是机器人视觉动作策略的学习。机器人视觉动作策略的学习是指根据观察到的信息输出相应的机器人运动动作,这一任务较为复杂和具有挑战性。</p> <p dir="auto">(2): 过去的方法包括使用高斯混合模型、分类表示,或者切换策略表示等不同的动作表示方式,但依然存在多峰分布、高维输出空间等挑战性问题。本文提出一种新的机器人视觉运动策略模型 - Diffusion Policy,其结合了扩散模型的表达能力,克服了传统方法的局限性,可以表达任意分布并支持高维空间。本模型通过学习代价函数的梯度,使用随机Langevin动力学算法进行迭代优化,最终输出机器人动作。</p> <p dir="auto">(3): 本文提出的机器人视觉动作策略 - Diffusion Policy,将机器人动作表示为一个条件去噪扩散过程。该模型可以克服多峰分布、高维输出空间等问题,提高了策略学习的表达能力。同时,本文通过引入展望控制、视觉诱导和时间序列扩散变换等技术,继续增强了扩散策略的性能。</p> <p dir="auto">(4): 本文的方法在11个任务上进行了测试,包括4个机器人操纵基准测试。实验结果表明,Diffusion Policy相对于现有的机器人学习方法,表现出明显的优越性和稳定性,平均性能提升了46.9%。</p> <p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/93dc866d4c8f3757c5596d5607e351e3158d4dbe968c3dd8249f544311baf851/68747470733a2f2f67697465652e636f6d2f6368617470617065722f6368617470617065722f7261772f6d61737465722f696d616765732f446966667573696f6e20506f6c6963793a20566973756f6d6f746f7220506f6c696379204c6561726e696e672076696120416374696f6e20446966667573696f6e2d323032332d30332d30382d32312d35352d35332e6a706567"><img alt="Fig" src="https://camo.githubusercontent.com/93dc866d4c8f3757c5596d5607e351e3158d4dbe968c3dd8249f544311baf851/68747470733a2f2f67697465652e636f6d2f6368617470617065722f6368617470617065722f7261772f6d61737465722f696d616765732f446966667573696f6e20506f6c6963793a20566973756f6d6f746f7220506f6c696379204c6561726e696e672076696120416374696f6e20446966667573696f6e2d323032332d30332d30382d32312d35352d35332e6a706567" data-canonical-src="https://gitee.com/chatpaper/chatpaper/raw/master/images/Diffusion Policy: Visuomotor Policy Learning via Action Diffusion-2023-03-08-21-55-53.jpeg" style="max-width: 100%;"></a></p> <p dir="auto">7.Methods: 本文提出的视觉动作策略学习方法,即Diffusion Policy,包括以下步骤:</p> <p dir="auto">(1) 建立条件去噪扩散过程:将机器人动作表示为一个含有高斯噪声的源的条件随机扩散过程。在该过程中,机器人状态作为源,即输入,通过扩散过程输出机器人的运动动作。为了将其变为条件随机扩散模型,我们加入了代价函数,它在路径积分中作为条件。</p> <p dir="auto">(2) 引入随机Langevin动力学:将学习代价函数的梯度转换为基于随机Langevin动力学的迭代优化问题。该方法可以避免显示计算扩散过程,并且可以满足无导数优化器的要求,使其受益于渐近高斯性质以及全局收敛性质。</p> <p dir="auto">(3) 引入扩散策略增强技术:使用展望控制技术,结合决策网络,对由扩散产生的动作进行调整,从而增强策略的性能。同时,引入视觉诱导以及时间序列扩散变换,来进一步提高扩散策略的表达能力。</p> <p dir="auto">(4) 在11个任务上进行测试:测试结果表明,该方法相对于现有的机器人学习方法,在机器人操纵基准测试中表现出明显的优越性和稳定性,平均性能提升了46.9%。</p> <p dir="auto">7.Conclusion: </p> <p dir="auto">(1):本文研究了机器人视觉动作策略的学习方法,提出了一种新的机器人视觉运动策略模型 - Diffusion Policy,通过引入扩散模型的表达能力,克服了传统方法的局限性,可以表达任意分布并支持高维空间。实验结果表明,该方法在11个任务上均表现出明显的优越性和稳定性,相对于现有机器人学习方法,平均性能提高了46.9%,这一研究意义巨大。</p> <p dir="auto">(2):虽然本文提出了一种新的机器人视觉动作策略学习方法,并在实验中取得了良好的表现,但该方法的优化过程可能比较耗时。此外,该方法的性能受到多种因素的影响,包括演示的质量和数量、机器人的物理能力以及策略架构等,这些因素需在实际应用场景中加以考虑。</p> <p dir="auto">(3):如果让我来推荐,我会给这篇文章打9分。该篇文章提出的Diffusion Policy方法具有较高的可解释性、性能表现良好、实验结果稳定等优点,能够为机器人视觉动作策略学习等领域带来很大的启发与借鉴。唯一的不足可能是方法的优化过程需要投入更多的时间和精力。</p> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">使用技巧</h2><a id="user-content-使用技巧" class="anchor" aria-label="Permalink: 使用技巧" href="#使用技巧"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>查看使用技巧</b></code></summary> <p dir="auto">快速刷特定关键词的论文,不插图的话,每张篇文章需要花一分钟,阅读时间差不多一分钟。</p> <p dir="auto">本项目可以用于跟踪领域最新论文,或者关注其他领域的论文,可以批量生成总结,最大可生成1000(如果你能等得及的话)。 虽然Chat可能有瞎编的成分,但是在我的规范化提问的框架下,它的主要信息是保熟的。</p> <p dir="auto">数字部分需要大家重新去原文检查!</p> <p dir="auto">找到好的文章之后,可以精读这篇文章。</p> <p dir="auto">推荐另外两个精读论文的AI辅助网站:<a href="https://typeset.io/" rel="nofollow">https://typeset.io/</a> 和chatpdf。 我的教程: <a href="https://zhuanlan.zhihu.com/p/611874187" rel="nofollow">强化学徒:论文阅读神器SciSpace(Typeset.io)测评-和AI一起进化</a></p> <p dir="auto">和上面这两个工具的主要优势在于,ChatPaper可以批量自动总结最新论文,可以极大的降低阅读门槛,尤其是我们国人。 缺点也很明显,ChatPaper没有交互功能,不能连续提问,但我觉得这个重要性不大~</p> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">常见报错</h2><a id="user-content-常见报错" class="anchor" aria-label="Permalink: 常见报错" href="#常见报错"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <details><summary><code><b>查看常见报错</b></code></summary> <ol dir="auto"> <li>pip 安装错误: <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224949301-5871610a-dd8e-4c44-b412-174ce593ad3d.png"><img src="https://user-images.githubusercontent.com/28528386/224949301-5871610a-dd8e-4c44-b412-174ce593ad3d.png" alt="pip error" style="max-width: 100%;"></a></li> </ol> <p dir="auto">推荐关掉梯子,使用国内源下载:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com"><pre>pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com</pre></div> <ol start="2" dir="auto"> <li>调用openai的chatgpt api时出现APIConnectionError, 如何解决? 参考知乎回答: <a href="https://www.zhihu.com/question/587322263/answer/2919916984" rel="nofollow">https://www.zhihu.com/question/587322263/answer/2919916984</a></li> </ol> <p dir="auto">直接在chat_paper.py里加上</p> <p dir="auto">os.environ["http_proxy"] = "http://<代理ip>:<代理端口>" os.environ["https_proxy"] = "http://<代理ip>:<代理端口>"</p> <p dir="auto">代理ip和端口需要你在Windows系统里面查找。</p> <div dir="auto"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224496999-1a8a7946-00aa-4d51-9f18-45bdde4215b9.png"><img src="https://user-images.githubusercontent.com/28528386/224496999-1a8a7946-00aa-4d51-9f18-45bdde4215b9.png" width="400" height="300" style="max-width: 100%;"></a> </div> <ol start="3" dir="auto"> <li>API被OpenAI禁了的报错:</li> </ol> <p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/224464704-80f9b010-14f8-4df0-9635-cdfcb2faea51.png"><img src="https://user-images.githubusercontent.com/28528386/224464704-80f9b010-14f8-4df0-9635-cdfcb2faea51.png" alt="3222" style="max-width: 100%;"></a></p> <p dir="auto">这种情况只能用新号了。另外一定要注意一个号尽量不要多刷,节点一定要靠谱,千万不能用大陆和香港的节点,用了就寄。</p> <ol start="4" dir="auto"> <li>Https通信错误: <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28528386/229026391-7cfacf76-e18c-4ae3-a8d5-b8736e8dd056.jpg"><img src="https://user-images.githubusercontent.com/28528386/229026391-7cfacf76-e18c-4ae3-a8d5-b8736e8dd056.jpg" alt="KBVVRL`KI560X~$27GLDQYI" style="max-width: 100%;"></a></li> </ol> <p dir="auto">这个报错大概率是节点不够干净。如果有大佬知道具体原因,欢迎挂issues</p> <p dir="auto"><a href="https://github.com/kaixindelele/ChatPaper/issues/174" data-hovercard-type="issue" data-hovercard-url="/kaixindelele/ChatPaper/issues/174/hovercard">issue174</a>提供的方案是:</p> <div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="pip install urllib3==1.25.11"><pre><span class="pl-s1">pip</span> <span class="pl-s1">install</span> <span class="pl-s1">urllib3</span><span class="pl-c1">==</span><span class="pl-c1">1.25</span>.<span class="pl-c1">11</span></pre></div> </details> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">项目致谢</h2><a id="user-content-项目致谢" class="anchor" aria-label="Permalink: 项目致谢" href="#项目致谢"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ol dir="auto"> <li>感谢实验室的支持和指导、群友和实验室同学的技术支持和大量转发!还有张老板和化老板的出谋划策。</li> <li><a href="https://github.com/HouSiyuan2001">Siyuan</a>同学在我开始项目的时候,分享了两个核心函数,节省了很多时间。</li> <li><a href="https://github.com/WangRongsheng">rongsheng</a>同学的在线网站,让这个项目可以使得更多的技术小白,可以尝试。</li> <li><a href="https://github.com/lukasschwab/arxiv.py">Arxiv</a>的作者提供的好用的arxiv论文下载包。</li> <li><a href="https://github.com/pymupdf/PyMuPDF">PyMuPDF</a>提供良好的PDF解析工具。让整个信息流得以打通。</li> <li>OpenAI提供了这么强的一个AI模型,让AI整个行业都活了起来,让学术“巴别塔”的构建有了基础。</li> <li>感谢Ex-ChatGPT的作者分享的各种ChatGPT的开发细节,开发过程中学习良多,以及现在一直在开发我们的网页版内容。另外给计算机专业的佬们,推荐这款非常强大的开源工具:</li> <li>感谢ChatReviewer的作者将他的项目合并到我们的ChatPaper中,使得ChatPaper更加完整。 <a href="https://github.com/circlestarzero/EX-chatGPT">Ex-ChatGPT</a> 是一个强大的工具平台,能让 ChatGPT 能够调用外部 API,例如 WolframAlpha、Google 和 WikiMedia,以提供更准确和及时的答案。 江湖人称 GoogleChat.</li> <li>还得感谢GitHub官方,帮我们这个项目列入了<a href="https://github.com/trending">热榜第五</a>,获得了大量的关注!</li> <li>后面我们整个项目流程打通,需要感谢同样是中科院的同学们开发的<a href="https://github.com/binary-husky/gpt_academic">gpt_academic</a>,我们在他们的基础上做了润色部分。以及<a href="https://github.com/nishiwen1214">nishiwen1214</a>的<a href="https://github.com/nishiwen1214/ChatReviewer">ChatReviewer</a>,补齐了我们的审稿和审稿回复。</li> <li>感谢<a href="https://github.com/SilenceEagle/paper_downloader">SilenceEagle</a>提供的CCF-A的论文数据库,我们已经离线总结了3w+的论文了。</li> <li>感谢里屋社区的开源和整理中文数据集<a href="https://github.com/esbatmop/MNBVC">MNBVC</a>,希望国产中文大模型早日起飞!</li> <li>感谢一路以来,所有对项目支持和本人提供帮助的朋友和老师!</li> </ol> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Starchart</h2><a id="user-content-starchart" class="anchor" aria-label="Permalink: Starchart" href="#starchart"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto"><a href="https://star-history.com/#kaixindelele/ChatPaper&Date" rel="nofollow"><img src="https://camo.githubusercontent.com/78a20b74712aae2b2dda93262c42cf100ab96f7a908d19770225cb0b48ddb944/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d6b616978696e64656c656c652f43686174506170657226747970653d44617465" alt="Star History Chart" data-canonical-src="https://api.star-history.com/svg?repos=kaixindelele/ChatPaper&type=Date" style="max-width: 100%;"></a></p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Contributors</h2><a id="user-content-contributors" class="anchor" aria-label="Permalink: Contributors" href="#contributors"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <a href="https://github.com/kaixindelele/ChatPaper/graphs/contributors"> <img src="https://camo.githubusercontent.com/6b42d37bc8daf13703a726cbe192267cc5cbcc2893dd60a5e1560d0241bebdef/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6b616978696e64656c656c652f436861745061706572" data-canonical-src="https://contrib.rocks/image?repo=kaixindelele/ChatPaper" style="max-width: 100%;"> </a> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">项目引用:</h2><a id="user-content-项目引用" class="anchor" aria-label="Permalink: 项目引用:" href="#项目引用"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Please cite the repo if you use the data or code in this repo.</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="@misc{ChatPaper, author={Yongle Luo, Rongsheng Wang, Peter Gam, Jiaxi Cui, circlestarzero, Shiwen Ni, Jaseon Quanta, Qingxu Fu, Siyuan Hou}, title = {ChatPaper: Use LLM to summarize papers.}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/kaixindelele/ChatPaper}}, }"><pre class="notranslate"><code>@misc{ChatPaper, author={Yongle Luo, Rongsheng Wang, Peter Gam, Jiaxi Cui, circlestarzero, Shiwen Ni, Jaseon Quanta, Qingxu Fu, Siyuan Hou}, title = {ChatPaper: Use LLM to summarize papers.}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/kaixindelele/ChatPaper}}, } </code></pre></div> </article></div></div></div></div></div> <!-- --> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-partial> <input type="hidden" data-csrf="true" value="BSJchvRxj4CkFzoTRd8npcHDqetiusKfhJyEz2bEtky2adYzm+ZCDij5dSvCwH1b67KUDPXVdMn/yAec1lk27A==" /> </div> <div data-view-component="true" class="Layout-sidebar"> <div class="BorderGrid about-margin" data-pjax> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <div class="hide-sm hide-md"> <h2 class="mb-3 h4">About</h2> <p class="f4 my-3"> Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结+专业翻译+润色+审稿+审稿回复 </p> <div class="my-3 d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link flex-shrink-0 mr-2"> <path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path> </svg> <span class="flex-auto min-width-0 css-truncate css-truncate-target width-fit"> <a title="https://chatwithpaper.org" role="link" target="_blank" rel="noopener noreferrer nofollow" class="text-bold" href="https://chatwithpaper.org">chatwithpaper.org</a> </span> </div> <h3 class="sr-only">Topics</h3> <div class="my-3"> <div class="f6"> <a href="/topics/paper" title="Topic: paper" data-view-component="true" class="topic-tag topic-tag-link"> paper </a> <a href="/topics/arxiv" title="Topic: arxiv" data-view-component="true" class="topic-tag topic-tag-link"> arxiv </a> </div> </div> <h3 class="sr-only">Resources</h3> <div class="mt-2"> <a class="Link--muted" data-analytics-event="{"category":"Repository Overview","action":"click","label":"location:sidebar;file:readme"}" href="#readme-ov-file"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book mr-2"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> Readme </a> </div> <h3 class="sr-only">License</h3> <div class="mt-2"> <a href="#License-1-ov-file" class="Link--muted" data-analytics-event="{"category":"Repository Overview","action":"click","label":"location:sidebar;file:license"}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"> <path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path> </svg> View license </a> </div> <include-fragment src="/kaixindelele/ChatPaper/hovercards/citation/sidebar_partial?tree_name=main"> </include-fragment> <div class="mt-2"> <a href="/kaixindelele/ChatPaper/activity" data-view-component="true" class="Link Link--muted"><svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-2"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span class="color-fg-muted">Activity</span></a> </div> <h3 class="sr-only">Stars</h3> <div class="mt-2"> <a href="/kaixindelele/ChatPaper/stargazers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <strong>18.8k</strong> stars</a> </div> <h3 class="sr-only">Watchers</h3> <div class="mt-2"> <a href="/kaixindelele/ChatPaper/watchers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye mr-2"> <path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z"></path> </svg> <strong>93</strong> watching</a> </div> <h3 class="sr-only">Forks</h3> <div class="mt-2"> <a href="/kaixindelele/ChatPaper/forks" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <strong>2k</strong> forks</a> </div> <div class="mt-2"> <a class="Link--muted" href="/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fkaixindelele%2FChatPaper&report=kaixindelele+%28user%29"> Report repository </a> </div> </div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/kaixindelele/ChatPaper/releases" data-view-component="true" class="Link--primary no-underline Link">Releases</a></h2> <div class="text-small color-fg-muted">No releases published</div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/users/kaixindelele/packages?repo_name=ChatPaper" data-view-component="true" class="Link--primary no-underline Link d-flex flex-items-center">Packages <span title="0" hidden="hidden" data-view-component="true" class="Counter ml-1">0</span></a></h2> <div class="text-small color-fg-muted" > No packages published <br> </div> </div> </div> <div class="BorderGrid-row" hidden> <div class="BorderGrid-cell"> <include-fragment src="/kaixindelele/ChatPaper/used_by_list" accept="text/fragment+html"> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/kaixindelele/ChatPaper/graphs/contributors" data-view-component="true" class="Link--primary no-underline Link d-flex flex-items-center">Contributors <span title="13" data-view-component="true" class="Counter ml-1">13</span></a></h2> <include-fragment src="/kaixindelele/ChatPaper/contributors_list?count=13&current_repository=ChatPaper&items_to_show=13" aria-busy="true" aria-label="Loading contributors"> <ul class="list-style-none d-flex flex-wrap mb-n2"> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> </ul> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3">Languages</h2> <div class="mb-2"> <span data-view-component="true" class="Progress"> <span style="background-color:#3572A5 !important;;width: 69.9%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#DA5B0B !important;;width: 14.6%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#3D6117 !important;;width: 14.4%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#384d54 !important;;width: 0.6%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#89e051 !important;;width: 0.2%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#C1F12E !important;;width: 0.2%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#427819 !important;;width: 0.1%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> </span></div> <ul class="list-style-none"> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=python" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#3572A5;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Python</span> <span>69.9%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=jupyter-notebook" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#DA5B0B;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Jupyter Notebook</span> <span>14.6%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=tex" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#3D6117;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">TeX</span> <span>14.4%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=dockerfile" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#384d54;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Dockerfile</span> <span>0.6%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=shell" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#89e051;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Shell</span> <span>0.2%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=batchfile" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#C1F12E;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Batchfile</span> <span>0.2%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/kaixindelele/ChatPaper/search?l=makefile" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#427819;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">Makefile</span> <span>0.1%</span> </a> </li> </ul> </div> </div> </div> </div> </div></div> </div> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> © 2025 GitHub, Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>