Charles Azam commited on
Commit
b1060b0
·
1 Parent(s): a0b6cc3

feat: add linkup and tarvily functions

Browse files
.gitignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ .env
README.md CHANGED
@@ -49,3 +49,12 @@ The minimum tools needed are:
49
  - Deepseek (LLM)
50
  - Perplexity / Talily / Wikipedia / Arxiv
51
 
 
 
 
 
 
 
 
 
 
 
49
  - Deepseek (LLM)
50
  - Perplexity / Talily / Wikipedia / Arxiv
51
 
52
+ # Personal notes
53
+
54
+ Web:
55
+ créer les fonctions syncrones pour crawler les pages web avec smolagents avec les outils que je veux
56
+ vérifier ensuite que je puisse :
57
+ - récupérer des pdfss de arxviv
58
+ - récupérer des pdfs de n'importe ou
59
+ - commencer par faire les outils pour tester sur perplexity tavily ect... crawl4ai nous donnera du markdown, donc on veut pouvoir télécharger des papiers et des pdfs.
60
+ - avoir un outil général de gestion des markdowns
data/linkup_response.json ADDED
@@ -0,0 +1,348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "query": "Would it be possible to make a thermal reactor with graphite and lead?",
3
+ "answer": "Yes. Graphite can be used as a neutron moderator in thermal reactors, and lead (or lead alloys) can serve as a coolant. Graphite-moderated reactors have been historically used, and lead-cooled fast reactors are an established design concept. Combining graphite as moderator with lead as coolant is technically possible, though not common in commercial thermal reactors. Lead coolant is more typical in fast reactors, which do not use moderators, but research and designs exist exploring such combinations for specific applications.",
4
+ "search_results": [
5
+ {
6
+ "title": "Graphite-moderated reactor - Wikipedia",
7
+ "url": "https://en.wikipedia.org/wiki/Graphite-moderated_reactor",
8
+ "content": ""Graphite reactor" directs here. For the graphite reactor at Oak Ridge National Laboratory, see X-10 Graphite Reactor. A graphite-moderated reactor is a nuclear reactor that uses carbon as a neutron moderator, which allows natural uranium to be used as nuclear fuel.\nSeveral types of graphite-moderated nuclear reactors have been used in commercial electricity generation: ... Fort St. Vrain Generating Station \u00b7 High temperature gas-cooled reactors (in development or construction) ... There have been a number of research or test reactors built that use graphite as the moderator.\nIn addition, the French Saint-Laurent Nuclear Power Plant and the Spanish Vandell\u00f2s Nuclear Power Plant \u2013 both UNGG graphite-moderated natural uranium reactors \u2013 suffered major accidents. Particularly noteworthy is a partial core meltdown on 17 October 1969 and a heat excursion during graphite annealing on 13 March 1980 in Saint-Laurent, which were both classified as INES 4.\n\"Graphite reactor\" directs here. For the graphite reactor at Oak Ridge National Laboratory, see X-10 Graphite Reactor. A graphite-moderated reactor is a nuclear reactor that uses carbon as a neutron moderator, which allows natural uranium to be used as nuclear fuel.\nThe first artificial nuclear reactor, the Chicago Pile-1, used nuclear graphite as a moderator.\nGraphite-moderated reactors were involved in two of the best-known nuclear disasters: an untested graphite annealing process contributed to the Windscale fire (but the graphite itself did not catch fire), while a graphite fire during the Chernobyl disaster contributed to the spread of radioactive material.",
9
+ "raw_content": null
10
+ },
11
+ {
12
+ "title": "graphite",
13
+ "url": "https://www.osti.gov/servlets/purl/4844192",
14
+ "content": "U.S. Department of Energy Office of Scientific and Technical Information - OSTI.GOV is the primary search tool for Department of Energy science, technology, and engineering research information funded by the US Department of Energy and the organizational hub for the Office of Scientific and ...\nundefined",
15
+ "raw_content": null
16
+ },
17
+ {
18
+ "title": "Nuclear Graphite Research Needs in the 21st Century",
19
+ "url": "http://large.stanford.edu/courses/2017/ph241/sarkisian2/",
20
+ "content": "Three different types of materials are commonly used as moderators in nuclear reactors today today: light (regular) water, heavy water (deuterium oxide), and solid graphite. Only around 20% of today's nuclear reactors use graphite as a moderator.\nThus in order to create a nuclear chain reaction, whereby the neutrons ejected from one nucleus incite fusion in other nuclei, the fast-moving neutrons ejected during fusion must be slowed down by a moderator. As shown in Fig. 1, nuclear power reactors that use graphite moderators, such as those based on the RBMK design, encase the nuclear fuel rods in chambers with graphite walls so that the fast-moving neutrons emitted from one rod are slowed by the graphite moderator before reaching other rods, allowing a chain reaction to spread throughout all the rods.\nThree different types of materials are commonly used as moderators in nuclear reactors today today: light (regular) water, heavy water (deuterium oxide), and solid graphite. Only around 20% of today's nuclear reactors use graphite as a moderator.\nMathematically, this can be expressed as the moderating efficiency, which is given by the material's neutron scattering cross section divided by its neutron absorption cross section. [7] Graphite's moderating efficiency (1343) is less than heavy water's (8154), but two orders of magnitude greater than light water's (74.24), so graphite theoretically has a high potential to be a much better moderator than light water. [7] (The majority of today's nuclear reactors use light water as a moderator.\nAlthough graphite is in theory a much better moderator than light water, light water is currently more appealing because graphite moderators are susceptible to degradation, are capable of causing nuclear runaway explosions in loss-of-coolant events, and require more complicated waste management than light water reactors. These challenges present a variety of research opportunities that could allow modern nuclear reactors to utilize graphite's excellent moderating efficiency without suffering the same problems as graphite-moderated nuclear reactors in the past.",
21
+ "raw_content": null
22
+ },
23
+ {
24
+ "title": "Why aren't graphite moderated reactors more popular?",
25
+ "url": "https://www.reddit.com/r/nuclear/comments/w5ucmp/why_arent_graphite_moderated_reactors_more_popular/",
26
+ "content": "Focus on peaceful use of nuclear energy tech, economics, news, and climate change \u00b7 They seem to have a bunch of advantages over light water PWR or BWR systems. Especially the gas cooled Magnox types with a neutral void coefficient and the ability to utilize natural unenriched uranium fuel\nFocus on peaceful use of nuclear energy tech, economics, news, and climate change.",
27
+ "raw_content": null
28
+ },
29
+ {
30
+ "title": "Nuclear graphite - Wikipedia",
31
+ "url": "https://en.wikipedia.org/wiki/Nuclear_graphite",
32
+ "content": "Nuclear graphite is any grade of graphite, usually synthetic graphite, manufactured for use as a moderator or reflector within a nuclear reactor. Graphite is an important material for the construction of both historical and modern nuclear reactors because of its extreme purity and ability to ...\nGraphite is an important material for the construction of both historical and modern nuclear reactors because of its extreme purity and ability to withstand extremely high temperatures. Nuclear fission, the creation of a nuclear chain reaction in uranium, was discovered in 1939 following experiments by Otto Hahn and Fritz Strassman, and the interpretation of their results by physicists such as Lise Meitner and Otto Frisch.\nThe highest-purity graphite then commercially available (so called electro-graphite) was dismissed by the Germans and the British as a possible moderator because it contained boron and cadmium impurities. However, graphite of high enough purity was developed in the early 1940's in the United States, and this then was utilized in the first and subsequent nuclear reactors for the Manhattan Project.\nThe AGOT process and its later refinements became standard techniques in the manufacture of nuclear graphite. The neutron cross section of graphite was investigated during the Second World War in Germany by Walter Bothe, P. Jensen, and Werner Heisenberg. The purest graphite available to them was a product from the Siemens Plania company, which exhibited a neutron absorption cross section of about 6.4 mb to 7.5 mb. Heisenberg therefore decided that graphite would be unsuitable as a moderator in a reactor design using natural uranium.\nNuclear graphite is any grade of graphite, usually synthetic graphite, manufactured for use as a moderator or reflector within a nuclear reactor. Graphite is an important material for the construction of both historical and modern nuclear reactors because of its extreme purity and ability to ...\nIn December 1942 Eugene Wigner suggested that neutron bombardment might introduce dislocations and other damage in the molecular structure of materials such as the graphite moderator in a nuclear reactor.",
33
+ "raw_content": null
34
+ },
35
+ {
36
+ "title": "Understanding Graphite Nuclear Reactor: A Compressive Guide - East Carbon",
37
+ "url": "https://www.eastcarb.com/graphite-nuclear-reactor/",
38
+ "content": "The strong covalent bonds within the graphite structure offer good mechanical strength. This allows utilization within the reactor core as a structural component. Graphite in a nuclear reactor performs the function of neutron moderation. In this role, it slows down the movement of neutrons ...\nThe strong covalent bonds within the graphite structure offer good mechanical strength. This allows utilization within the reactor core as a structural component. Graphite in a nuclear reactor performs the function of neutron moderation. In this role, it slows down the movement of neutrons produced during fission.\nOriginally designed during the Second World War for plutonium production utilized in nuclear weapons, rather than power generation. This graphite-moderated reactor core featured large graphite blocks in which uranium fuel rods were inserted with air as the cooling medium.\nGraphite for nuclear reactors, also nuclear-grade graphite, is made to meet the rigorous requirements of nuclear environments. When used in reactor cores, graphite primarily functions as a neutron moderator and also as part of the core\u2019s structural material.\nIsotropy: Graphite for nuclear reactors should be isotropic. This means their behavior and response should be similar in all directions. This is especially when it comes to neutron moderation and thermal expansion. As a result, it retains its structural integrity under intense radiation and heat.",
39
+ "raw_content": null
40
+ },
41
+ {
42
+ "title": "What is graphite used for in nuclear power? - Quora",
43
+ "url": "https://www.quora.com/What-is-graphite-used-for-in-nuclear-power",
44
+ "content": "Answer (1 of 4): When an uranium nucleus fission it splits to two smaller nuclei and emits few neutrons. These fission neutrons have energies around 2 MeV. In order for an uranium nucleus to fission, a neutron should come close to the nucleus so that nuclear attractive forces pull neutron into th...\nundefined",
45
+ "raw_content": null
46
+ },
47
+ {
48
+ "title": "r/chernobyl on Reddit: Why does the RBMK-reactor use graphite as moderator?",
49
+ "url": "https://www.reddit.com/r/chernobyl/comments/udsjcy/why_does_the_rbmkreactor_use_graphite_as_moderator/",
50
+ "content": "Water-moderated reactors require highly enriched uranium, and so-called "heavy water", both of which are expensive to produce. Graphite is great at moderating neutrons, which allows the use of weakly-enriched uranium, which is what was used in RBMKs prior to the disaster. The RBMKs were designed ...\nAfter watching the HBO-series a second time I have been trying to learn more by reading some books on Chernobyl and there are some things about nuclear reactors that I dont understand. From what I understand the most reactors uses water as both coolant and moderator while the RBMK-reactor uses graphite as moderator and water as coolant.\nWater-moderated reactors require highly enriched uranium, and so-called \"heavy water\", both of which are expensive to produce. Graphite is great at moderating neutrons, which allows the use of weakly-enriched uranium, which is what was used in RBMKs prior to the disaster. The RBMKs were designed and built at the hight of the Soviet nuclear power rush.\nThe most common nuclear reactors are LWRs that use low-enriched uranium for the fuel, and light water for the coolant and moderator. ... It seems that your comment contains 1 or more links that are hard to tap for mobile users. I will extend those so they're easier for our sausage fingers to click! ... \"By using a minimalist design that used regular (light) water for cooling and graphite for moderation, it was possible to use low-enriched uranium for fuel (1.8% enrichment instead of considerably more expensive enriched uranium of around 4%).\n57 votes, 36 comments. After watching the HBO-series a second time I have been trying to learn more by reading some books on Chernobyl and there are\u2026",
51
+ "raw_content": null
52
+ },
53
+ {
54
+ "title": "Graphite-moderated reactors \u2013 Knowledge and References",
55
+ "url": "https://taylorandfrancis.com/knowledge/Engineering_and_technology/Power_&_energy/Graphite-moderated_reactors/",
56
+ "content": "Not Found \u00b7 /Engineering_and_technology/Power_&_energy/Graphite-moderated_reactors\nundefined",
57
+ "raw_content": null
58
+ },
59
+ {
60
+ "title": "Nuclear Power Reactors - World Nuclear Association",
61
+ "url": "https://world-nuclear.org/information-library/nuclear-fuel-cycle/nuclear-power-reactors/nuclear-power-reactors",
62
+ "content": "The CANDU and RBMK types have pressure ... for refuelling on-load. If graphite or heavy water is used as moderator, it is possible to run a power reactor on natural instead of enriched uranium....\nThe CANDU and RBMK types have pressure tubes (rather than a pressure vessel enclosing the reactor core) and can be refuelled under load by disconnecting individual pressure tubes. The AGR is also designed for refuelling on-load. If graphite or heavy water is used as moderator, it is possible to run a power reactor on natural instead of enriched uranium.\nNatural uranium has the same elemental composition as when it was mined (0.7% U-235, over 99.2% U-238), enriched uranium has had the proportion of the fissile isotope (U-235) increased by a process called enrichment, commonly to 3.5-5.0%. In this case the moderator can be ordinary water, and such reactors are collectively called light water reactors. Because the light water absorbs neutrons as well as slowing them, it is less efficient as a moderator than heavy water or graphite.\nThese are the second generation of British gas-cooled reactors, using graphite moderator and carbon dioxide as primary coolant. The fuel is uranium oxide pellets, enriched to 2.5 - 3.5%, in stainless steel tubes. The carbon dioxide circulates through the core, reaching 650\u00b0C and then past steam generator tubes outside it, but still inside the concrete and steel pressure vessel (hence 'integral' design).\nThe AGR was developed from the Magnox reactor. Magnox reactors were also graphite moderated and CO2 cooled, used natural uranium fuel in metal form, and water as secondary coolant. The UK's last Magnox reactor closed at the end of 2015.",
63
+ "raw_content": null
64
+ },
65
+ {
66
+ "title": "[Solved] Graphite is used in nuclear reactor _________.",
67
+ "url": "https://testbook.com/question-answer/graphite-is-used-in-nuclear-reactor-_________--601533cca7ce240f7a28ab96",
68
+ "content": "It was built on 4 August 1956 at the Trombay campus of the Bhabha Atomic Research Centre. It was formally inaugurated by Prime Minister Pandit Jawaharlal Nehru on January 20, 1957. The Graphite rods work as a moderator to control the rate of reaction in a nuclear reactor.\nAsia's first nuclear reactor is called 'Apsara'. It was built on 4 August 1956 at the Trombay campus of the Bhabha Atomic Research Centre. It was formally inaugurated by Prime Minister Pandit Jawaharlal Nehru on January 20, 1957. The Graphite rods work as a moderator to control the rate of reaction in a nuclear reactor.\nThe correct answer is for reducing the velocity of neutrons. Nuclear reactors are devices in which nuclear chain reaction is controlled. Nuclear reacto\nQ10.Which of the following is / are used as moderator (s) in nuclear reactors ?\nGenerally, all nuclear reactors are based on nuclear fusion using uranium as a fuel.",
69
+ "raw_content": null
70
+ },
71
+ {
72
+ "title": "IAEA-TECDOC-1521",
73
+ "url": "https://www-pub.iaea.org/MTCD/Publications/PDF/te_1521_web.pdf",
74
+ "content": "Scientific, technical publications in the nuclear field, includes international safety standards, technical guides, conference records and scientific reports.\nundefined",
75
+ "raw_content": null
76
+ },
77
+ {
78
+ "title": "Graphite Reactor | ORNL",
79
+ "url": "https://www.ornl.gov/content/graphite-reactor",
80
+ "content": "It went like this: If you're trying ... nuclear reactor for nuclear power, you have all sorts of choices because there are various kinds of fuels\u2014plutonium, enriched uranium\u2014various kinds of coolants\u2014water, gas, liquid metal\u2014and various kinds of moderators\u2014graphite, heavy water, light water. Well, I was very enthusiastic, even during the war, about trying out ordinary water as a coolant ...\nIt went like this: If you're trying to figure out how to make a nuclear reactor for nuclear power, you have all sorts of choices because there are various kinds of fuels\u2014plutonium, enriched uranium\u2014various kinds of coolants\u2014water, gas, liquid metal\u2014and various kinds of moderators\u2014graphite, heavy water, light water. Well, I was very enthusiastic, even during the war, about trying out ordinary water as a coolant and as the moderator.\nThirdly, I believe that sooner or later, we're going to learn how to burn nuclear fuel cleanly. And if we do, I think the work we started here is going to benefit mankind tremendously. ... Leroy Jackson transferred to Oak Ridge from the U.S. Army Corps of Engineers' Manhattan District in February 1943 to conduct site planning for the housing that accommodated the scientific staff at the Graphite Reactor as well as thousands of other workers on site.\n\"The work that took place at the Graphite Reactor had ramifications for many fields of science,\" Weinberg said. \"This was the place, for example, where mammalian radiation biology in its modern sense really originated. The reactor had important implications for the development of nuclear power, both for naval submarines and for electric utilities.\nDuring the 20 years the Graphite Reactor operated\u2014from 1943 to 1963\u2014it continued its pioneering role. It produced the first electricity from nuclear energy. It was the first reactor used to study the nature of matter and the health hazards of radioactivity.",
81
+ "raw_content": null
82
+ },
83
+ {
84
+ "title": "Graphite Plates as Neutron Moderators in Nuclear Reactors - [email protected]",
85
+ "url": "https://graphenerich.com/graphite-plates-as-neutron-moderators-in-nuclear-reactors/",
86
+ "content": "Early nuclear reactors primarily utilized graphite plates, and currently, many production reactors (a type of nuclear reactor primarily used to convert uranium-238 into plutonium-239 for nuclear weapons) still use graphite plates as a moderating material.\nGraphite plates have a very high melting point and maintain high strength at elevated temperatures, allowing them to be used for extended periods around 1000\u00b0C. This gives graphite plates an advantage over water and heavy water (both of which can also serve as neutron moderators). Graphite has a low probability of absorbing thermal neutrons but is less effective at slowing down thermal neutrons compared to heavy water. Therefore, nuclear reactors using graphite plates as the core structural material tend to be larger.\nGraphite plates are used as one of the primary neutron moderators and reflectors in the construction of nuclear reactors.\nBy the end of the century, graphite slow neutron breeder reactors (uranium-thorium conversion) are expected to mature and develop further. Consequently, graphite materials will receive increasing attention in future nuclear reactor engineering projects.\nGraphite-Water Cooled Reactors: These use graphite as the neutron moderator and water as the coolant. Graphite-Gas Cooled Reactors: In these reactors, graphite serves as the neutron moderator, and carbon dioxide or helium is used as the coolant.",
87
+ "raw_content": null
88
+ },
89
+ {
90
+ "title": "Is there a clear reason why graphite as a nuclear reactor moderator has fallen out of favor in modern designs? - Quora",
91
+ "url": "https://www.quora.com/Is-there-a-clear-reason-why-graphite-as-a-nuclear-reactor-moderator-has-fallen-out-of-favor-in-modern-designs",
92
+ "content": "Answer (1 of 7): Water-moderated reactors do have the advantage that they\u2019re self-regulating to a degree. When the water heats up it expands, the moderation drops, and the reaction slows. If it is under-moderated, which is the typical design. When the water cools it gets denser, the moderation ...\nAnswer (1 of 7): Water-moderated reactors do have the advantage that they\u2019re self-regulating to a degree. When the water heats up it expands, the moderation drops, and the reaction slows. If it is under-moderated, which is the typical design. When the water cools it gets denser, the moderation in...",
93
+ "raw_content": null
94
+ },
95
+ {
96
+ "title": "A Complete Guide to Understand Graphite in Nuclear Reactors",
97
+ "url": "https://jinsuncarbon.com/graphite-in-nuclear-reactors/",
98
+ "content": "Graphite plays an important role in a number of nuclear reactors, especially those which are at high temperatures or blow natural uranium as fuel. Graphite is commonly used in nuclear reactors as a moderator to slow down neutrons produced during fission. Graphite\u2019s role in slowing down these ...\nGraphite plays an important role in a number of nuclear reactors, especially those which are at high temperatures or blow natural uranium as fuel. Graphite is commonly used in nuclear reactors as a moderator to slow down neutrons produced during fission. Graphite\u2019s role in slowing down these neutrons allows for a much greater probability of [\u2026]\nNeutron Moderation: The main draw of graphite in nuclear reactors is its capability to slow down fast neutrons. Neutrons are ejected at speeds much higher than after a fission reaction. The neutrons emitted from the fission processes must be slowed down so that they are more likely to cause further fission reactions in the reactor\u2019s fuel. Graphite serves as a very good neutron moderator, and will not absorb neutrons too much.\nSpace Applications: Graphite is also under consideration for use in nuclear reactors meant for out-of-Earth applications, where the need for heat resistance and the capability of neutronic moderation make it an attractive option in space reactors. Graphite was an essential part of nuclear reactor design for many years; it served as a moderator, structural material, and heat conductor.\nWhat are the properties that make it more suited and more stable than the materials that will be needed in reactors that will have complex geometries and that will need precision under extreme conditions? Use of Natural Uranium: A major advantage of graphite as a moderator is it enables reactors to use natural uranium as fuel.",
99
+ "raw_content": null
100
+ },
101
+ {
102
+ "title": "Graphite core of AGRs | Office for Nuclear Regulation",
103
+ "url": "https://www.onr.org.uk/our-work/what-we-regulate/operational-power-stations/current-issues/graphite-core-of-agrs/",
104
+ "content": "The UK has a long history of using graphite as a moderator from the early Magnox reactors to the Advanced Gas-cooled Reactors (AGRs). The moderator slows down the speed of neutrons produced during nuclear fission and helps to sustain the chain reaction so that the heat can be used for electricity ...\nThe UK has a long history of using graphite as a moderator from the early Magnox reactors to the Advanced Gas-cooled Reactors (AGRs). The moderator slows down the speed of neutrons produced during nuclear fission and helps to sustain the chain reaction so that the heat can be used for electricity production.\nThe main issue associated with graphite bricks is graphite core ageing (weight-loss and cracking). The Office for Nuclear Regulation's mission is to protect society by securing safe nuclear operations. ONR would not allow the continued operation of any reactor unless it was safe to do so. The UK fleet of AGRs are now the only power producing nuclear reactors in the world that have a graphite-moderated, carbon-dioxide cooled core.\nTherefore, the technical community supporting the AGRs is small in relation to that for water moderated reactors and there is a lack of comparable experience outside of the UK. \u00b7 For several years, ONR has focused on creating and developing a number of independent sources of expert advisors that can conduct research to develop independent models and provide advice which is independent of the licensee. ... A graphite technical advisory committee was formed in 2004, consisting of senior academics and other internationally recognised experts in nuclear graphite technology.\nThe evolving graphite safety cases involve development of complex graphite material models, component stress analysis, prediction of component degradation, whole core modelling, statistical assessment of core state and graphite experimental work. In addition, an independent review of some other aspects of the graphite safety cases submitted by the licensee, EDF Energy Nuclear Generation Ltd (EDF Energy), is also required.",
105
+ "raw_content": null
106
+ },
107
+ {
108
+ "title": "Open Knowledge Wiki - Graphite in Nuclear Industry",
109
+ "url": "https://nucleus.iaea.org/sites/graphiteknowledgebase/wiki/Wiki%20Pages/Graphite%20in%20Nuclear%20Industry.aspx",
110
+ "content": "1. Introduction 2. Overview 3. Detailed reports \u00b7 Taken with permission from\nundefined",
111
+ "raw_content": null
112
+ },
113
+ {
114
+ "title": "Lead-cooled fast reactor - Wikipedia",
115
+ "url": "https://en.wikipedia.org/wiki/Lead-cooled_fast_reactor",
116
+ "content": "The lead-cooled fast reactor is a nuclear reactor design that uses molten lead or lead-bismuth eutectic as its coolant. These materials can be used as the primary coolant because they have low neutron absorption and relatively low melting points. Neutrons are slowed less by interaction with ...\nThe lead-cooled fast reactor is a nuclear reactor design that uses molten lead or lead-bismuth eutectic as its coolant. These materials can be used as the primary coolant because they have low neutron absorption and relatively low melting points. Neutrons are slowed less by interaction with ...\nThe first commercial nuclear reactor (SEALER-One) is planned to be built in Oskarshamn in with the hope of reaching criticality in 2029. Serial production of the SEALER-55 is planned to start in the early 2030's. The initial design of the Hyperion Power Module was to be of this type, using uranium nitride fuel encased in HT-9 tubes, using a quartz reflector, and lead-bismuth eutectic as coolant.\nLead has a high thermal conductivity (35 W/m\u30fbK) compared to that of water (0.58 W/m\u30fbK), which means that heat transport from the fuel elements to the coolant is efficient. Instead of regular refueling, the whole core can be replaced after many years of operation. Such a reactor is suitable for countries that do not plan to build their own nuclear infrastructure.\nThus, a larger portion of the nuclear fission energy can be converted into electricity. More than 40 % efficiency is achievable in real conditions, compared to around 30 % in water-cooled reactors. Similarly, as with all fast spectrum reactors, the coolant is not pressurized.\nThe lead-cooled reactor design has been proposed as a generation IV reactor. Plans for future implementation of this type of reactor include modular arrangements rated at 300 to 400 MWe, and a large monolithic plant rated at 1,200 MWe. Lead-cooled fast reactors operate with fast neutrons and molten lead or lead-bismuth eutectic coolant.",
117
+ "raw_content": null
118
+ },
119
+ {
120
+ "title": "UNM student studies molten lead as coolant for advanced clean energy nuclear reactors | UNM UCAM Newsroom",
121
+ "url": "https://news.unm.edu/news/unm-student-studies-molten-lead-as-coolant-for-advanced-clean-energy-nuclear-reactors",
122
+ "content": "Khaled Talaat, Ph.D. candidate ... Nuclear Engineering Department, is one of the researchers on the VTR project. As a researcher on the VTR project, Talaat\u2019s dissertation, Computational Methods, Investigations, and Codes to Support Corrosion Experiments in Molten Lead and Transfer to Reactor Conditions, focuses on using computational models to identify materials that can stand up to the highly corrosive effect of flowing molten lead when used as a coolant in nuclear ...\nKhaled Talaat, Ph.D. candidate in The University of New Mexico\u2019s Nuclear Engineering Department, is one of the researchers on the VTR project. As a researcher on the VTR project, Talaat\u2019s dissertation, Computational Methods, Investigations, and Codes to Support Corrosion Experiments in Molten Lead and Transfer to Reactor Conditions, focuses on using computational models to identify materials that can stand up to the highly corrosive effect of flowing molten lead when used as a coolant in nuclear reactors.\nCurrently, water is the most common coolant used in nuclear reactors. However, there are downsides to using water as a coolant. Researchers, including Talaat, are studying molten lead as a replacement for water.\nResearchers all over the world are pursuing methods to develop clean, green, and renewable energy resources to reduce human impact on the planet. This includes research dedicated to building new, technologically advanced, nuclear reactors to support the...\nCoolants are essential to the operation of nuclear reactors. They capture the heat generated in the core of the reactor and convey it to generators which then produce electricity.",
123
+ "raw_content": null
124
+ },
125
+ {
126
+ "title": "Liquid metal cooled reactor - Wikipedia",
127
+ "url": "https://en.wikipedia.org/wiki/Liquid_metal_cooled_reactor",
128
+ "content": "Although tin today is not used as a coolant for working reactors because it builds a crust, it can be a useful additional or replacement coolant at nuclear disasters or loss-of-coolant accidents. The Soviet November-class submarine K-27 and all seven Alfa-class submarines used reactors cooled by lead...\nAlthough tin today is not used as a coolant for working reactors because it builds a crust, it can be a useful additional or replacement coolant at nuclear disasters or loss-of-coolant accidents. The Soviet November-class submarine K-27 and all seven Alfa-class submarines used reactors cooled by lead-bismuth eutectic and moderated with beryllium as their propulsion plants.\nLiquid metals generally have high boiling points, reducing the probability that the coolant can boil, which could lead to a loss-of-coolant accident. Low vapor pressure enables operation at near-ambient pressure, further dramatically reducing the probability of an accident. Some designs immerse the entire core and heat exchangers into a pool of coolant, virtually eliminating the risk that inner-loop cooling will be lost. Clementine was the first liquid metal cooled nuclear reactor and used mercury coolant, thought to be the obvious choice since it is liquid at room temperature.\nThis makes them attractive for improving power output, cost effectiveness, and fuel efficiency in nuclear power plants. Liquid metals, being electrically highly conductive, can be moved by electromagnetic pumps. Disadvantages include difficulties associated with inspection and repair of a reactor immersed in opaque molten metal, and depending on the choice of metal, fire hazard risk (for alkali metals), corrosion and/or production of radioactive activation products may be an issue. Liquid metal coolant has been applied to both thermal- and fast-neutron reactors.\nSodium and NaK (a eutectic sodium-potassium alloy) do not corrode steel to any significant degree and are compatible with many nuclear fuels, allowing for a wide choice of structural materials. NaK was used as the coolant in the first breeder reactor prototype, the Experimental Breeder Reactor-1, in 1951.\nIt suffered a partial nuclear meltdown in 1963 and was decommissioned in 1975. At Dounreay in Caithness, in the far north of Scotland, the United Kingdom Atomic Energy Authority (UKAEA) operated the Dounreay Fast Reactor (DFR), using NaK as a coolant, from 1959 to 1977, exporting 600 GW-h of electricity to the grid over that period.",
129
+ "raw_content": null
130
+ },
131
+ {
132
+ "title": "Nuclear reactor coolant - Wikipedia",
133
+ "url": "https://en.wikipedia.org/wiki/Nuclear_reactor_coolant",
134
+ "content": "Additionally, this effect must ... Most have been liquid metal cooled reactors using molten sodium. Lead, lead-bismuth eutectic, and other metals have also been proposed and occasionally used....\nAdditionally, this effect must be taken into account for longer cycles of nuclear reactor operation and thus requires higher initial concentration of boron in the coolant. Fast reactors have a high power density and do not need, and must avoid, neutron moderation. Most have been liquid metal cooled reactors using molten sodium. Lead, lead-bismuth eutectic, and other metals have also been proposed and occasionally used.\nFrequently, a chain of two coolant loops are used because the primary coolant loop takes on short-term radioactivity from the reactor. Almost all currently operating nuclear power plants are light water reactors using ordinary water under high pressure as coolant and neutron moderator.\nBorated water also provides the additional benefits of acting as a neutron poison due to its large neutron absorption cross-section, where it absorbs excess neutrons to help control the fission rate of the reactor. Thus, the reactivity of the nuclear reactor can be easily adjusted by changing the boron concentration in the coolant.\nMolten salts share with metals the advantage of low vapor pressure even at high temperatures, and are less chemically reactive than sodium. Salts containing light elements like FLiBe can also provide moderation. In the Molten-Salt Reactor Experiment it even served as a solvent carrying the nuclear fuel. Gases have also been used as coolant.\nHelium is extremely inert both chemically and with respect to nuclear reactions but has a low heat capacity, Organically moderated and cooled reactors were an early concept studied, using hydrocarbons as coolant.",
135
+ "raw_content": null
136
+ },
137
+ {
138
+ "title": "Lead-Cooled Fast Reactor - an overview | ScienceDirect Topics",
139
+ "url": "https://www.sciencedirect.com/topics/engineering/lead-cooled-fast-reactor",
140
+ "content": "Lead-cooled fast reactors (LFRs) are fast spectrum reactors cooled by molten lead (or lead-based alloys) operating at high temperatures and at near atmospheric pressure, conditions enabled because of the very high boiling point of the coolant (up to 1743\u00b0C) and its low vapor pressure.\nLead-cooled fast reactors (LFRs) are fast spectrum reactors cooled by molten lead (or lead-based alloys) operating at high temperatures and at near atmospheric pressure, conditions enabled because of the very high boiling point of the coolant (up to 1743\u00b0C) and its low vapor pressure. From: Handbook of Generation IV Nuclear Reactors, 2016 ... You might find these chapters and articles relevant to this topic. ... Lead-cooled fast reactor. Three designs are considered as reference ones within the framework of GIF:\nThe concept of lead-bismuth-cooled fast reactor has experienced a development in the USSR in relation to naval propulsion. The coolant under consideration is metallic lead or a lead/bismuth eutectic, transparent to fast neutrons with very low absorption. Fig. 19 shows the main components of a nuclear power plant proposed with a pool-type liquid lead cooled fast reactor and the machine park [11,12].\nThis type of reactor handles a closed fuel cycle enhanced by the fertile conversion of uranium; has a pool-type configuration that incorporates the reactor core with reflectors and control rods into the pool; a circulation circuit of lead coolant with steam generators and pumps; refueling and fuel management equipment; and security and auxiliary systems. As advantages, this technology can be used as a burner to consume actinides of spent LWR fuel and has excellent conditions in terms of simplification of the plant in the case of fast reactors (c.f., Alemberti et al., 2014), due to the elimination of the intermediate circuit, which results from the choice of a relatively inert refrigerant.\nAn important feature of the LFR is the enhanced safety that results from the choice of molten lead as a chemically inert and low-pressure coolant. In terms of sustainability, lead is abundant and hence available, even in case of deployment of a large number of reactors.",
141
+ "raw_content": null
142
+ },
143
+ {
144
+ "title": "Liquid Metal Coolants for Fast Reactors Cooled by Sodium, Lead and Lead-Bismuth Eutectic | IAEA",
145
+ "url": "https://www.iaea.org/publications/8589/liquid-metal-coolants-for-fast-reactors-cooled-by-sodium-lead-and-lead-bismuth-eutectic",
146
+ "content": "INTERNATIONAL ATOMIC ENERGY AGENCY, ... Lead and Lead-Bismuth Eutectic, IAEA Nuclear Energy Series No. NP-T-1.6, IAEA, Vienna (2012) Download to: EndNote BibTeX *use BibTeX for Zotero ... The choice of the coolant is one of the main technical issues concerning fast reactor design, since it determines design approach as well as safety, ...\nINTERNATIONAL ATOMIC ENERGY AGENCY, Liquid Metal Coolants for Fast Reactors Cooled by Sodium, Lead and Lead-Bismuth Eutectic, IAEA Nuclear Energy Series No. NP-T-1.6, IAEA, Vienna (2012) Download to: EndNote BibTeX *use BibTeX for Zotero ... The choice of the coolant is one of the main technical issues concerning fast reactor design, since it determines design approach as well as safety, technical and economic characteristics of the system.\nThis publication provides a comprehensive summary of the status of the liquid metal coolant technology development for fast reactors with regard to basic data and main technological challenges. It starts with remarks on the history of nuclear power development, provides a complete survey of physical and chemical properties of liquid metals, and discusses the coolant quality control and thermal-hydraulics studies for both sodium and lead alloys systems. Other chapters elaborate on radioactivity of coolants and describe past experiences as well as current projects.\nFinally, the design objectives, and main research and technology development challenges of innovative fast reactors having sodium, lead-bismuth eutectic, and lead as coolant, currently under investigation in the Russian Federation, as well as the status of the respective research and development activities, are summarized.",
147
+ "raw_content": null
148
+ },
149
+ {
150
+ "title": "Lead Fast Reactors (LFR) | GIF Portal",
151
+ "url": "https://www.gen-4.org/generation-iv-criteria-and-technologies/lead-fast-reactors-lfr",
152
+ "content": "Soviet scientists pioneered research ... (HLM) as coolants for nuclear reactors in the 1950s. This led to the successful operation of a land prototype reactor in 1959 and the deployment of Pb-Bi-cooled nuclear submarines, including the "Project 645, Submarine K-27" in 1963 and the "Projects 705 and 705K, NATO designation Alfa class" from 1971. These reactors were operating in the epithermal spectrum and cooled by a Lead Bismuth Eutectic ...\nSoviet scientists pioneered research on heavy liquid metals (HLM) as coolants for nuclear reactors in the 1950s. This led to the successful operation of a land prototype reactor in 1959 and the deployment of Pb-Bi-cooled nuclear submarines, including the \"Project 645, Submarine K-27\" in 1963 and the \"Projects 705 and 705K, NATO designation Alfa class\" from 1971. These reactors were operating in the epithermal spectrum and cooled by a Lead Bismuth Eutectic (Pb-Bi or LBE).\nThis is an important feature of nuclear energy systems relying on a mix of thermal and fast reactors. \u00b7 The high melting temperature of lead (327\u00b0C) requires that the primary coolant system be maintained at temperatures to prevent the solidification of the lead coolant or at least to maintain a recirculation at the core level to allow its cooling.\nA. Alemberti, M. Caramello, M. Frignani, G. Grasso, F. Merli, G. Morresi, M. Tarantino, \u201cALFRED reactor coolant system design\u201d Nuclear Engineering and Design 370 (2020), https://doi.org/10.1016/j.nucengdes.2020.110884 \u00b7 January 2024 \u2013 \u201cFirst lead-cooled fast neutron reactor's installation under way\u201d \u2013 BREST OD 300 Reactor Steel base plate being installed - First lead-cooled fast neutron reactor's installation under way : New Nuclear - World Nuclear News (world-nuclear-news.org)\nLFR (Lead-cooled Fast Reactor) systems are reactors cooled by liquid lead (Pb) or, in very few cases, by lead-bismuth (Pb-Bi) alloy and operating in the fast neutron spectrum at atmospheric pressure and high temperature. Many advantages of the LFR system are related to its choice of coolant: lead has a very high boiling point (up to 1743\u00b0C), favorable neutronic and radiation shielding properties as well as its benign interaction with water and air.",
153
+ "raw_content": null
154
+ },
155
+ {
156
+ "title": "Lead-Bismuth and Lead as Coolants for Fast Reactors",
157
+ "url": "https://www.scirp.org/journal/paperinformation?paperid=98300",
158
+ "content": "Discover the safety advantages of fast reactors using lead-bismuth eutectic (LBE) and lead coolants. Overcome radiophobia and explore their cost-effectiveness. Learn about the properties, impact on safety, reliability, and operating characteristics. Promising future for these coolants in nuclear ...\nDiscover the safety advantages of fast reactors using lead-bismuth eutectic (LBE) and lead coolants. Overcome radiophobia and explore their cost-effectiveness. Learn about the properties, impact on safety, reliability, and operating characteristics. Promising future for these coolants in nuclear power.",
159
+ "raw_content": null
160
+ },
161
+ {
162
+ "title": "Nuclear Power Reactors - World Nuclear Association",
163
+ "url": "https://world-nuclear.org/information-library/nuclear-fuel-cycle/nuclear-power-reactors/nuclear-power-reactors",
164
+ "content": "If a reactor needs to be shut down frequently, NaK eutectic which is liquid at room temperature (about 13\u00b0C) may be used as coolant, but the potassium is pyrophoric, which increases the hazard. Sodium is about six times more transparent to neutrons than lead.\nAbout 9% of the world's electricity is produced from nuclear energy. Most nuclear electricity is generated using just two kinds of reactor. New designs are coming forward and some are in operation as the first generation reactors come to the end of their operating lives.\nLead or lead-bismuth eutectic in fast neutron reactors are capable of higher temperature operation at atmospheric pressure. They are transparent to neutrons, aiding efficiency due to greater spacing between fuel pins which then allows coolant flow by convection for decay heat removal, and since they do not react with water the heat exchanger interface is safer.\nIn 1998 Russia declassified a lot of research information derived from its experience with submarine reactors, and US interest in using Pb generally or Pb-Bi for small reactors has increased subsequently. The Gen4 Module (Hyperion) reactor will use lead-bismuth eutectic which is 45% Pb, 55% Bi. A secondary circuit generating steam is likely. For details of lead-bismuth eutectic coolants, see the 2013 IAEA report in References.\nThe main design is the pressurized water reactor (PWR) which has water at over 300\u00b0C under pressure in its primary cooling/heat transfer circuit, and generates steam in a secondary circuit. The less numerous boiling water reactor (BWR) makes steam in the primary circuit above the reactor core, at similar temperatures and pressure. Both types use water as both coolant and moderator, to slow neutrons.",
165
+ "raw_content": null
166
+ },
167
+ {
168
+ "title": "Coolant - Nuclear energy - Energy Encyclopedia",
169
+ "url": "https://www.energyencyclopedia.com/en/nuclear-energy/the-nuclear-power-industry/coolant",
170
+ "content": "Approximately 20 m3 of water passes through a PWR type nuclear reactor every second and it heats up by some 30 \u00b0C. Lead or lead alloyed with bismuth is used in some fast reactors for cooling of the fuel assemblies. It does not slow neutrons down and it is safer than sodium.\nThe most common coolant used in nuclear power plants is water but they also use helium, CO2, molten sodium, lead, and fluoride salts. Steam generator. Helium is produced, together with other noble gases, in the industry by fractional distillation of air. However, some natural gas deposits are even more important sources of helium. All reactors that use water as a moderator use it also as a coolant.\nApproximately 20 m3 of water passes through a PWR type nuclear reactor every second and it heats up by some 30 \u00b0C. Lead or lead alloyed with bismuth is used in some fast reactors for cooling of the fuel assemblies. It does not slow neutrons down and it is safer than sodium. Fast breeder reactors require a coolant that does not slow down the neutrons.\nThe coolant removes heat from the fission reaction. The most commonly used is water, but also helium, CO2, molten sodium, lead, or fluoride salts are used.\nThese elements also exhibit good thermal and hydrodynamic properties and do not corrode the reactor vessel. Safer than sodium is lead or a eutectic alloy of lead and bismuth since these materials do not react with water and are not flammable in air. However, they corrode the steel and stainless steel parts. Molten fluoride salts may be also used. These types of coolants use water in the secondary cooling circuit, or less frequently, helium.",
171
+ "raw_content": null
172
+ },
173
+ {
174
+ "title": "power - Can a nuclear reactor meltdown be contained with molten lead? - Physics Stack Exchange",
175
+ "url": "https://physics.stackexchange.com/questions/6928/can-a-nuclear-reactor-meltdown-be-contained-with-molten-lead",
176
+ "content": "Water is much better and is currently ... like boric acid, which absorbs the neutrons; ... Lead, seawater, or anything with a low boiling point at low pressures would be a waste of time in an actual nuclear core melt down situation....\nThis is not something someone wants in a nuclear reactor. Water is much better and is currently used at Fukushima power plant because : it is much easier to manipulate and to get in large quantity than anything else; it is a good coolant, with high vaporization latent heat; its a good solvant and you an dissolve neutron poisons in it, like boric acid, which absorbs the neutrons; ... Lead, seawater, or anything with a low boiling point at low pressures would be a waste of time in an actual nuclear core melt down situation.\nIf lead can absorb or block radiation, would it be possible to pump molten lead into a reactor core which is melting, so that it would eventually cool and contain the radiation? Is there something...\nThe next reactors in the US will also be able to lose all coolant flow and not melt down. ... A problem that seems to have been overlooked is the atomic mass of lead. Lead, although heavier than all non radioactive elements, is lighter than all radioactive elements.\nA nuclear engineer would have to answer if it could be used as a precautionary system, before temperatures run away. But as in all industry projects, there is a cost benefit analysis, and the fact that lead would destroy completely the reactor would be against using it.",
177
+ "raw_content": null
178
+ },
179
+ {
180
+ "title": "Lead-Cooled Fast Reactor (LFR) - GIF Portal",
181
+ "url": "https://www.gen-4.org/gif/jcms/c_42149/lead-cooled-fast-reactor-lfr",
182
+ "content": "In October 2024 we upgraded the GIF Public Website. This page is here to help you find what you were looking for in the first place.\nGIF Organisation & Governance - Find out more about how GIF is organised and managed by its members, who is leading the Policy and the Experts Groups, who serves in the GIF Technical Secretariat \u00b7 Gen. IV Systems - Want to understand better the different Gen. IV Nuclear Energy Systems concepts and the criteria that help define a system as belonging the Gen. IV? Here you will learn about GIF's Technology Roadmap, R&D Outlooks & Gen IV Reactors\nThe Gen IV Systems Schematics have been updated along with the current website. Each schematic does not represent a specific reactor design. Instead, the goal is to illustrate the main aspects of key components, the circuit layout that make up each Gen IV Nuclear Energy system and their potential applications.",
183
+ "raw_content": null
184
+ },
185
+ {
186
+ "title": "Why are liquid metals preferred as coolants in a nuclear reactor? - Quora",
187
+ "url": "https://www.quora.com/Why-are-liquid-metals-preferred-as-coolants-in-a-nuclear-reactor",
188
+ "content": "Answer (1 of 3): Lead was used on one of the fastest Russian submarines ever created to increase power density. https://www.globalsecurity.org/military/world/russia/pl-haski-propulsion.htm Sodium is used in breeder reactors because it doesn\u2019t moderate the neutrons nearly as much as water.\nundefined",
189
+ "raw_content": null
190
+ },
191
+ {
192
+ "title": "Reactor with metallic fuel and lead-208 coolant*",
193
+ "url": "https://nucet.pensoft.net/article/50868/",
194
+ "content": "The paper considers the concept of a fast lead cooled 25MW reactor for a variety of applications, including incineration of minor actinides, production of medical radioisotopes, testing of radiation-damaged nuclear technology materials, etc. A specific feature of the proposed reactor is rather ...\nThe paper considers the concept of a fast lead cooled 25MW reactor for a variety of applications, including incineration of minor actinides, production of medical radioisotopes, testing of radiation-damaged nuclear technology materials, etc. A specific feature of the proposed reactor is rather a high neutron flux of 2.6\u00b71015 n/(cm2\u00b7s) at the core center, high average neutron energy of 0.95 MeV at the core center, and a large fraction (40%) of hard neutrons (En > 0.8 MeV).\nNuclear Energy and Technology 6(1): 23-27 https://doi.org/10.3897/nucet.6.50868 (11 Mar 2020) Other versions: XML \u00b7 PDF \u00b7 Twitter \u00b7 Facebook \u00b7 Mendeley \u00b7 Reddit \u00b7 Notify a colleague \u00b7 ContentsContents \u00b7 Article InfoArticle Info \u00b7 CiteCite \u00b7 MetricsMetrics \u00b7 CommentComment \u00b7 RelatedRelated \u00b7 FigsFigs \u00b7 TabsTabs \u00b7 RefsRefs \u00b7 CitedCited \u00b7 Article title \u00b7 Abstract \u00b7 Keywords \u00b7 Introduction \u00b7 BRUTs-25 reactor concept \u00b7",
195
+ "raw_content": null
196
+ },
197
+ {
198
+ "title": "Lead-cooled Fast Reactor | Westinghouse Nuclear",
199
+ "url": "https://westinghousenuclear.com/energy-systems/lead-cooled-fast-reactor/",
200
+ "content": "The Westinghouse Lead Fast Reactor ... modular reactor being developed to reduce front-end capital cost and generate flexible and cost-competitive electricity. The LFR achieves new levels of energy affordability by adopting innovative design features to simplify and compact the plant, while enhanced construction modularity shortens the construction schedule. Use of lead as coolant, with a boiling ...\nThe Westinghouse Lead Fast Reactor (LFR) is a medium-sized, passively safe modular reactor being developed to reduce front-end capital cost and generate flexible and cost-competitive electricity. The LFR achieves new levels of energy affordability by adopting innovative design features to simplify and compact the plant, while enhanced construction modularity shortens the construction schedule. Use of lead as coolant, with a boiling point exceeding 1700\u00b0C, allows for high temperature operation at atmospheric pressure without coolant boiling concerns.\nWestinghouse is currently developing a Lead-cooled Fast Reactor (LFR) concept \u2013 a next-generation nuclear plant designed to compete even in the most challenging global energy markets.\nIts high-temperature capabilities make it capable of addressing a broad range of applications such as combined heat and electricity, as well as water desalination in captive markets. Additionally, operation in fast neutron spectrum facilitates improved uranium resource utilization and reduced nuclear waste generation, with the potential to close the nuclear fuel cycle. ... Utilization of an air-based ultimate cooling system, removing the need for proximity to large bodies of water \u00b7 Learn more about the Westinghouse Lead-cooled Fast Reactor.\nBecause lead coolant operates at atmospheric pressure and does not exothermically react with air or with power conversion fluids (such as supercritical carbon dioxide and water), LFR technology also eliminates the need and associated expense of extra components and redundant safety systems required by other plant designs for protection against coolant leakages.",
201
+ "raw_content": null
202
+ },
203
+ {
204
+ "title": "The importance of helium coolant in nuclear reactors",
205
+ "url": "https://www.innovationnewsnetwork.com/the-importance-of-helium-coolant-in-nuclear-reactors/35349/",
206
+ "content": "Moreover, the employment of helium coolant in nuclear reactors could facilitate the transition from fossil fuels to more sustainable sources of energy. Given its abundance and non-toxic nature, helium presents less risk than other coolant alternatives, such as sodium or lead.\nDiscover why helium coolant in nuclear reactors will be essential in fuelling the green energy transition.\nCharacterised by its unique physical and chemical properties, such as low neutron absorption and high thermal conductivity, helium has been proven to significantly enhance the performance of nuclear reactors when utilised as a coolant.\nHowever, while the benefits of using helium coolant in nuclear reactors have been well-established, there remain challenges related to its supply and utilisation within the industry. Addressing these issues is crucial for maintaining operational efficiency and ensuring long-term sustainability in energy production. This article aims to delve into the science behind helium\u2019s application in nuclear reactors \u2013 including its role as a coolant, its contribution towards safety measures, and how it can be harnessed more effectively in future applications.\nIn a closed-loop system like a nuclear power plant, pressure contributes significantly to overall reactor efficiency. Helium\u2019s low density allows it to exhibit superior performance under high pressures and temperatures, unlike heavier gases that might suffer molecular breakdown under similar conditions. This attribute not only bolsters helium\u2019s position as an effective coolant but also enhances its compatibility with various types of reactor designs.",
207
+ "raw_content": null
208
+ },
209
+ {
210
+ "title": "overview of lead-cooled fast reactor (lfr) technology",
211
+ "url": "https://www.nrc.gov/docs/ML1915/ML19150A577.pdf",
212
+ "content": "www.nrc.gov - /docs/ML1915/ \u00b7 [To Parent Directory] 6/4/2023 6:54 PM 156050 ML19150A000.pdf 6/4/2023 6:54 PM 155383 ML19150A001.pdf 6/4/2023 6:54 PM 155529 ML19150A002.pdf 6/4/2023 6:54 PM 155683 ML19150A003.pdf 6/4/2023 6:54 PM 155466 ML19150A004.pdf 6/4/2023 6:54 PM 155323 ML19150A005.pdf ...\nundefined",
213
+ "raw_content": null
214
+ },
215
+ {
216
+ "title": "Lead cooled Fast Reactors \u2013 Nuclear Reactors Group",
217
+ "url": "https://www.nuclearenergy.polimi.it/research/lead-cooled-fast-reactors/",
218
+ "content": "The Lead-cooled Fast Reactor (LFR) has been selected by the Generation IV International Forum as one of the candidates for the next generation of nuclear reactors. LFRs adopt molten lead or lead-bismuth eutectic as primary coolant aimed at ensuring plant simplification, high operating efficiencies, ...\nThe Lead-cooled Fast Reactor (LFR) has been selected by the Generation IV International Forum as one of the candidates for the next generation of nuclear reactors. LFRs adopt molten lead or lead-bismuth eutectic as primary coolant aimed at ensuring plant simplification, high operating efficiencies, potential for a closed fuel cycle thanks to the thermal, chemical and neutronics favorable features of the lead.\nNRGroup collaborates since the beginning to the studies on LFRs, developed by ENEA and Ansaldo Nucleare within italian and european projects. ... The eXperimental Accelerator Driven System (XADS) facility, was developed in Italy by a consortium of companies, universities and research centers. The project aimed at demonstrating the correct management of the sub-critical reactor driven by the accelerator as well as the feasibility of the lead bismuth eutectic (LBE) as coolant and target material, in the perspective of the ADS industrial, practical-scale applications.\nAll the primary components (e.g., core, primary pumps and SGs) are contained into the main reactor vessel, being located in a large pool within the reactor tank. The coolant flow coming from the cold pool enters the core and, once passed through the latter, is collected in a volume (hot collector) to be distributed to eight parallel pipes and delivered to as many SGs. After leaving the SGs the coolant enters the cold pool through the cold leg and returns to the core. ... Politecnico di Milano, Dept. of Energy, CeSNEF-Nuclear Engineering Division, NUCLEAR REACTORS GROUP --- via La Masa, 34 20156 Milano, ITALY\nAn axial-flow primary pump, located inside the inner shell, provides the head required to force the coolant to flow radially from the inner to the outer perforated shrouds through the SG spirals tubes. ALFRED \u2013 Advanced Lead Fast Reactor European Demonstrator",
219
+ "raw_content": null
220
+ },
221
+ {
222
+ "title": "Liquid Metal Cooled Reactor - an overview | ScienceDirect Topics",
223
+ "url": "https://www.sciencedirect.com/topics/engineering/liquid-metal-cooled-reactor",
224
+ "content": "HLM could be used as the primary coolant for both fast and ADS reactors because of its good neutron properties, anti-irradiation performances, heat transfer properties and inherent safety (Sobolev, 2007). Fast reactor is the preferred reactor type in Generation IV reactors. The closed cycle of nuclear fuel supplied by fast reactor would lead ...\nHLM could be used as the primary coolant for both fast and ADS reactors because of its good neutron properties, anti-irradiation performances, heat transfer properties and inherent safety (Sobolev, 2007). Fast reactor is the preferred reactor type in Generation IV reactors. The closed cycle of nuclear fuel supplied by fast reactor would lead to 60% or more utilization of Uranium resources (Sienicki, 2013).\nCompared with all other advanced nuclear reactor concepts, there is relatively large operating experience with liquid-metal-cooled reactors, especially with sodium-cooled reactors. ... The application of lead or lead-alloys as coolant allows integration of steam generators in the reactor vessel.\nA lead or lead-alloy reactor pool ensures a high self-shielding capacity. As always, also in nuclear engineering, there is no free lunch. The following drawbacks can be identified related to the application of liquid metal as a coolant in nuclear reactors:\nThe high mass of lead and lead-alloys leads to erosion issues in the components of the primary cooling system. This limits the coolant speed in such systems below 2 m/s as a rule of thumb. ... The chemical reactivity of sodium with air and water requires a sealed coolant system and special measures to prevent (nuclear) consequences of such reactions.",
225
+ "raw_content": null
226
+ },
227
+ {
228
+ "title": "Graphite-moderated reactor - Wikipedia",
229
+ "url": "https://en.wikipedia.org/wiki/Graphite-moderated_reactor",
230
+ "content": "Graphite-moderated reactors were involved in two of the best-known nuclear disasters: an untested graphite annealing process contributed to the Windscale fire (but the graphite itself did not catch fire), while a graphite fire during the Chernobyl disaster contributed to the spread of radioactive ...\nGraphite-moderated reactors were involved in two of the best-known nuclear disasters: an untested graphite annealing process contributed to the Windscale fire (but the graphite itself did not catch fire), while a graphite fire during the Chernobyl disaster contributed to the spread of radioactive material.\nThe first artificial nuclear reactor, Chicago Pile-1, a graphite-moderated device that produced between 0.5 watts and 200 watts , was constructed by a team led by Enrico Fermi in 1942. The construction and testing of this reactor (an \"atomic pile\") was part of the Manhattan Project.\nIn the Windscale fire, an untested annealing process for the graphite was used, and that contributed to the accident \u2013 however it was the uranium fuel rather than the graphite in the reactor that caught fire.\nIn the Chernobyl disaster, the graphite was a contributing factor to the cause of the accident. Due to overheating from lack of adequate cooling, the fuel rods began to deteriorate. After the SCRAM (AZ5) button was pressed to shut down the reactor, the control rods jammed in the middle of the core, causing a positive loop, since the nuclear fuel reacted to graphite.\nNow exposed to both air and the heat from the reactor core, the graphite moderator in the reactor core caught fire, and this fire sent a plume of highly radioactive fallout into the atmosphere and over an extensive geographical area. In addition, the French Saint-Laurent Nuclear Power Plant and the Spanish Vandell\u00f2s Nuclear Power Plant \u2013 both UNGG graphite-moderated natural uranium reactors \u2013 suffered major accidents.",
231
+ "raw_content": null
232
+ },
233
+ {
234
+ "title": "Nuclear graphite for high temperature reactors.",
235
+ "url": "https://www.nrc.gov/docs/ML0117/ML011770379.pdf",
236
+ "content": "www.nrc.gov - /docs/ML0117/ \u00b7 [To Parent Directory] 11/17/2012 6:36 PM 171920 ML011700004.pdf 7/22/2021 3:09 AM 145393 ML011700008.pdf 11/17/2012 6:36 PM 29495 ML011700010.pdf 7/21/2021 7:39 PM 684696 ML011700011.pdf 7/23/2021 2:41 AM 166594 ML011700012.pdf 7/23/2021 1:54 AM 226886 ML011700014.pdf ...\nundefined",
237
+ "raw_content": null
238
+ },
239
+ {
240
+ "title": "Sodium Graphite Reactors",
241
+ "url": "https://whatisnuclear.com/sodium-graphite-reactors.html",
242
+ "content": "The Sodium Graphite Reactor (SGR) is a nearly-forgotten nuclear reactor design intended to make economical power by combining the high-temperature/low-pressure nature of sodium liquid metal coolant with the fissile efficiency enabled by a graphite moderator. In Hallam, Nebraska, one such SGR ...\nThe Sodium Graphite Reactor (SGR) is a nearly-forgotten nuclear reactor design intended to make economical power by combining the high-temperature/low-pressure nature of sodium liquid metal coolant with the fissile efficiency enabled by a graphite moderator. In Hallam, Nebraska, one such SGR shared a turbine with a coal plant.\nAlong the way, someone came up with the idea of using sodium metal coolant with graphite moderator. It\u2019s a sodium-cooled slow reactor (as opposed to the more common sodium-cooled fast reactor). The idea here was to capture the following benefits: Sodium metal coolant can be brought to higher temperature than high-pressure water, allowing higher thermal efficiency (more heat can be converted to electricity when the heat is higher temperature).\nAs was common in the pioneering days of nuclear, these reactors were not without issues. SRE had a coolant issue that led to melted fuel, and Hallam had issues with the moderator cans leaking, allowing sodium to contact the graphite and cause swelling.\nTypical water-cooled reactors can\u2019t make steam hot enough for this. The shared nuclear/coal turbine/generator itself (from AEC) Weisner, A sodium-graphite reactor steam-electric station for 75 megawatts net generation, 1955",
243
+ "raw_content": null
244
+ },
245
+ {
246
+ "title": "On the thermal oxidation of nuclear graphite relevant to high-temperature gas cooled reactors - ScienceDirect",
247
+ "url": "https://www.sciencedirect.com/science/article/abs/pii/S0022311522005785",
248
+ "content": "Thermal oxidation of nuclear graphite components is highly undesirable because it can cause structural and property degradation that negatively affect a reactor's intended operation. In this work, the body of knowledge of nuclear graphite oxidation is highlighted, including when O2, H2O, and/or ...\nThermal oxidation of nuclear graphite components is highly undesirable because it can cause structural and property degradation that negatively affect a reactor's intended operation. In this work, the body of knowledge of nuclear graphite oxidation is highlighted, including when O2, H2O, and/or CO2 are the oxidant.\nManufactured graphite has been used as a neutron moderator since the first nuclear chain reaction (CP-1) in 1942 led by Fermi [1]. High-purity graphite was known as a good neutron moderator, but the ability to procure it in the necessary quantities was an important factor in its selection [1]. In all, nearly 400 t of graphite was used for CP-1 [1]. Graphite's ability to scatter (thermalize) fast-moving neutrons without capturing them is essentially the defining feature of a neutron-moderating material, but manufactured graphite also provides high-temperature stability, low thermal expansion, high thermal conductivity, machinability, and large-scale availability. These properties have made nuclear graphite an indispensable material for gas-cooled reactors across multiple generations and design types [1,2].\nThermal oxidation of nuclear graphite components is highly undesirable because it can cause structural and property degradation that negatively affect\u2026\nBecause of the limited graphite resistance to oxidants attack discussed above, two different types of oxidation events must be \u00b7 Although the goal of oxidation testing is to quantity the extent of degradation (e.g., rate, amount, depth), the primary concern is that loss of material leads to irreversible reductions in thermal-mechanical properties.",
249
+ "raw_content": null
250
+ },
251
+ {
252
+ "title": "Graphite Reactor | ORNL",
253
+ "url": "https://www.ornl.gov/content/graphite-reactor",
254
+ "content": "Hanford, Washington, was selected ... large reactors could be built there, a pilot plant was necessary to prove the feasibility of scaling up from laboratory experiments. A secluded, rural area near Clinton, Tennessee, was chosen both for the full-scale production of enriched uranium and for the pilot-scale production of plutonium. The Graphite Reactor, designed ...\nHanford, Washington, was selected as the site for plutonium production, but before large reactors could be built there, a pilot plant was necessary to prove the feasibility of scaling up from laboratory experiments. A secluded, rural area near Clinton, Tennessee, was chosen both for the full-scale production of enriched uranium and for the pilot-scale production of plutonium. The Graphite Reactor, designed for this second purpose, was built in only nine months.\nThe reactor \"went critical\" at 5 a.m.; less than two months later, it was producing a third of a ton of irradiated uranium a day. Two months after that, Oak Ridge chemists produced the world's first few grams of plutonium. During the 20 years the Graphite Reactor operated\u2014from 1943 to 1963\u2014it continued its pioneering role.\nThese small samples would then be hand-carried to the University of Chicago for further study. Later, the Hanford reactors went critical and produced plutonium used in the atomic bomb. There were many people doing experiments around the Graphite Reactor in the early days.\nLeroy Jackson transferred to Oak Ridge from the U.S. Army Corps of Engineers' Manhattan District in February 1943 to conduct site planning for the housing that accommodated the scientific staff at the Graphite Reactor as well as thousands of other workers on site.",
255
+ "raw_content": null
256
+ },
257
+ {
258
+ "title": "Graphite Reactor",
259
+ "url": "https://www.ornl.gov/sites/default/files/Graphite%20Reactor%20Small%20Brochure%20FINAL%209.4.15.pdf",
260
+ "content": "More than 7,000 scientists, engineers, technicians, and support staff representing more than 70 nations form a dynamic culture of innovation at Oak Ridge National Laboratory \u00b7 We strengthen America through discovery science enabled by multidisciplinary teams and powerful research tools, ...\nundefined",
261
+ "raw_content": null
262
+ },
263
+ {
264
+ "title": "Nuclear Power Reactors - World Nuclear Association",
265
+ "url": "https://world-nuclear.org/information-library/nuclear-fuel-cycle/nuclear-power-reactors/nuclear-power-reactors",
266
+ "content": "The high temperature gives it a high thermal efficiency \u2013 about 41%. Refuelling can be on-load. ... The AGR was developed from the Magnox reactor. Magnox reactors were also graphite moderated and CO2 cooled, used natural uranium fuel in metal form, and water as secondary coolant.\nAbout 9% of the world's electricity is produced from nuclear energy. Most nuclear electricity is generated using just two kinds of reactor. New designs are coming forward and some are in operation as the first generation reactors come to the end of their operating lives.\nHowever, they are corrosive of fuel cladding and steels, which originally limited temperatures to 550\u00b0C (boiling point of lead is 1750\u00b0C). With today's materials 650\u00b0C can be reached, and in future 800\u00b0C is envisaged with the second stage of Generation IV development, using oxide dispersion-strengthened steels. Lead and Pb-Bi have much higher thermal conductivity than water, but lower than sodium. Rosatom is building a demonstration 300 MWe BREST lead-cooled fast neutron reactor in Russia.\nThe Gen4 Module (Hyperion) reactor will use lead-bismuth eutectic which is 45% Pb, 55% Bi. A secondary circuit generating steam is likely. For details of lead-bismuth eutectic coolants, see the 2013 IAEA report in References. SALT: Fluoride salts boil at around 1400\u00b0C at atmospheric pressure, so allow several options for use of the heat, including using helium in a secondary Brayton cycle circuit with thermal efficiencies of 48% at 750\u00b0C to 59% at 1000\u00b0C, for manufacture of hydrogen.\nRestarting a reactor with some used fuel may not require this, as there may be enough neutrons to achieve criticality when control rods are removed. Moderator Material in the core which slows down the neutrons released from fission so that they cause more fission. It is usually water, but may be heavy water or graphite.",
267
+ "raw_content": null
268
+ },
269
+ {
270
+ "title": "Graphite Gas Reactors | Purolite | www.purolite.com",
271
+ "url": "https://www.purolite.com/index/core-technologies/industry/power/nuclear-power/graphite-gas-reactors",
272
+ "content": "High water quality is required in order for a nuclear power plant to run safely and effectively. Here, we cover the nuclear industry water quality guidelines, as well as some possible system contaminants to remain aware of throughout routine operations.\nFrom helping to extend your unit's life to ensuring that your plant maintains a safe environment from radioactive isotopes, our on-site technical experts can find solutions to help you to meet the nuclear promise. The graphite-gas reactor was one of the first types to be introduced.\nInitial designs were the Magnox and later the advanced gas-cooled reactor (AGR) system. All of these operate with two reactors in a single structure and use uranium as the fuel. In the reactor core, fuel rods located inside a block of graphite acts as a moderator.\nThe coolant is pressurized CO2, which passes through the reactor core, removing heat. This heated CO2 stream drives turbine generators that generate electricity. One of the primary advantages seen with the graphite-gas design is its ability to allow for the online replacement of fuel elements.\nOperating difficulties make graphite-gas reactors commercially less attractive to build and have restricted widespread use of this design. Ion exchange technology treats four circuits in a graphite-gas nuclear plant. They are the makeup water, the returned condensate, the turbo blower and the spent fuel pool.",
273
+ "raw_content": null
274
+ },
275
+ {
276
+ "title": "RBMK Reactors \u2013 Appendix to Nuclear Power Reactors - World Nuclear Association",
277
+ "url": "https://world-nuclear.org/information-library/appendices/rbmk-reactors",
278
+ "content": "The RBMK is an unusual reactor design, one of two to emerge in the Soviet Union. The design had several shortcomings, and was the design involved in the 1986 Chernobyl disaster. Major modifications have been made to the RMBK reactors still operating.\nThe Soviet-designed RBMK (reaktor bolshoy moshchnosty kanalny, high-power channel reactor) is a water-cooled reactor with individual fuel channels and using graphite as its moderator. It is also known as the light water graphite reactor (LWGR). As with a boiling water reactor (BWR), water boils in the fuel channels (at about 6.9 MPa) and steam is separated above them in a single circuit.\nWhen fuel channels are isolated, the fuel assemblies can be lifted into and out of the reactor, allowing fuel replenishment while the reactor is in operation. A series of graphite blocks surround, and hence separate, the pressure tubes. They act as a moderator to slow down the neutrons released during fission so that a continuous fission chain reaction can be maintained.\nReactors cooled by boiling water will contain a certain amount of steam in the core. Because water is both a more efficient coolant and a more effective neutron absorber than steam, a change in the proportion of steam bubbles, or 'voids', in the coolant will result in a change in core reactivity. The ratio of these changes is termed the void coefficient of reactivity. When the void coefficient is negative, an increase in steam will lead to a decrease in reactivity.\nIn those reactors where the same water circuit acts as both moderator and coolant, excess steam generation reduces the slowing of neutrons necessary to sustain the nuclear chain reaction. This leads to a reduction in power, and is a basic safety feature of most Western reactors.",
279
+ "raw_content": null
280
+ },
281
+ {
282
+ "title": "Gas-cooled reactor - Wikipedia",
283
+ "url": "https://en.wikipedia.org/wiki/Gas-cooled_reactor",
284
+ "content": "The Canadian CANDU reactor, using heavy water as a moderator, was designed with the same goal of using natural uranium fuel for similar reasons. Historically thermal spectrum graphite-moderated gas-cooled reactors mostly competed with light water reactors, ultimately losing out to them after ...\nThe Canadian CANDU reactor, using heavy water as a moderator, was designed with the same goal of using natural uranium fuel for similar reasons. Historically thermal spectrum graphite-moderated gas-cooled reactors mostly competed with light water reactors, ultimately losing out to them after having seen some deployment in Britain .\nNuclear graphite is more expensive than light water but less expensive than heavy water ... The Magnox reactors developed by the United Kingdom.\nA gas-cooled reactor (GCR) is a nuclear reactor that uses graphite as a neutron moderator and a gas (carbon dioxide or helium in extant designs) as coolant. Although there are many other types of reactor cooled by gas, the terms GCR and to a lesser extent gas cooled reactor are particularly ...\nBoudouard reaction between graphite moderator and CO2 coolant can produce explosive and poisonous carbon monoxide \u00b7 A loss of coolant accident, unlike in a water-moderated reactor, does not by itself cause a scram\nBoth types were mainly constructed in their countries of origin, with a few export sales: two Magnox plants to Italy and Japan, and one UNGG to Spain. More recently, GCRs based on the declassified drawings of the early Magnox reactors have been constructed by North Korea at the Yongbyon Nuclear Scientific Research Center.",
285
+ "raw_content": null
286
+ },
287
+ {
288
+ "title": "Nuclear graphite - Wikipedia",
289
+ "url": "https://en.wikipedia.org/wiki/Nuclear_graphite",
290
+ "content": "In the Windscale fire, an untested ... core and leading directly to the ignition of the fire. The material that ignited was the canisters of metallic uranium fuel within the reactor. When the fire was extinguished, it was found that the only areas of the graphite moderator to have incurred thermal damage were ...\nIn the Windscale fire, an untested annealing process for the graphite was used, causing overheating in unmonitored areas of the core and leading directly to the ignition of the fire. The material that ignited was the canisters of metallic uranium fuel within the reactor. When the fire was extinguished, it was found that the only areas of the graphite moderator to have incurred thermal damage were those that had been close to the burning fuel canisters.\nReactor-grade graphite must be free of neutron absorbing materials, especially boron, which has a large neutron capture cross section. Boron sources in graphite include the raw materials, the packing materials used in baking the product, and even the choice of soap (for example, borax) used to launder the clothing worn by workers in the machine shop. Boron concentration in thermally purified graphite (such as AGOT graphite) can be less than 0.4 ppm, and in chemically purified nuclear graphite it is less than 0.06 ppm.\nThe result was that the fuel rods rapidly melted and flowed together while in an extremely high power state, causing a small portion of the core to reach a state of runaway prompt criticality and leading to a massive energy release, resulting in the explosion of the reactor core and the destruction of the reactor building. The massive energy release during the primary event superheated the graphite moderator, and the disruption of the reactor vessel and building allowed the superheated graphite to come into contact with atmospheric oxygen.\nThe highest-purity graphite then commercially available (so called electro-graphite) was dismissed by the Germans and the British as a possible moderator because it contained boron and cadmium impurities. However, graphite of high enough purity was developed in the early 1940's in the United States, and this then was utilized in the first and subsequent nuclear reactors for the Manhattan Project.\nBy November 1942 National Carbon had shipped 250 tons of AGOT graphite to the University of Chicago where it became the primary source of graphite to be used in the construction of Fermi's Chicago Pile-1, the first nuclear reactor to generate a sustained chain reaction (December 2, 1942).",
291
+ "raw_content": null
292
+ },
293
+ {
294
+ "title": "RBMK - Wikipedia",
295
+ "url": "https://en.wikipedia.org/wiki/RBMK",
296
+ "content": "This allows more neutrons to fission ... which leads to higher temperatures that boil even more water, creating a thermal feedback loop. In RBMK reactors, generation of steam in the coolant water would then in practice create a void: a bubble that does not absorb neutrons. The reduction in moderation by light water is irrelevant, as graphite still moderates ...\nThis allows more neutrons to fission more U-235 nuclei and thereby increase the reactor power, which leads to higher temperatures that boil even more water, creating a thermal feedback loop. In RBMK reactors, generation of steam in the coolant water would then in practice create a void: a bubble that does not absorb neutrons. The reduction in moderation by light water is irrelevant, as graphite still moderates the neutrons.\nThe RBMK was the culmination of the Soviet nuclear power program to produce a water-cooled power reactor with dual-use potential based on their graphite-moderated plutonium production military reactors. The first of these, Obninsk AM-1 (\"\u0410\u0442\u043e\u043c \u041c\u0438\u0440\u043d\u044b\u0439\", Atom Mirny, Russian for \"peaceful atom,\" analogous to the American Atoms for Peace) generated 5 MW of electricity from 30 MW thermal power, and supplied Obninsk from 1954 until 1959.\nThe reactor vessel is an annular steel cylinder with hollow walls and pressurized with nitrogen gas, with an inner diameter and height of 14.52 m \u00d7 9.7 m, and a wall thickness of 16 mm. In order to absorb axial thermal expansion loads, it is equipped with two annular bellows compensators, one on the top and another on the bottom, in the spaces between the inner and outer walls. The vessel surrounds the graphite core block stack, which serves as moderator.\nTheir top surfaces form part of the floor of the reactor hall and serve as part of the biological shield and for thermal insulation of the reactor space. They consist of serpentinite concrete blocks that cover individual removable steel-graphite plugs, located over the tops of the channels, forming what resembles a circle with a grid pattern.\nThis assembly reduces transfer of mechanical loads caused by neutron-induced swelling, thermal expansion of the blocks, and other factors to the pressure tube, while facilitating heat transfer from the graphite blocks. The pressure tubes are welded to the top and bottom plates of the reactor vessel.",
297
+ "raw_content": null
298
+ },
299
+ {
300
+ "title": "Nuclear graphite for high temperature gas-cooled reactors - ScienceDirect",
301
+ "url": "https://www.sciencedirect.com/science/article/abs/pii/S1872580517601161",
302
+ "content": "As the most promising candidate for generation IV reactors, HTGRs have two main designs, the pebble bed reactor and the prismatic reactor. In both designs, the graphite acts as the moderator, fuel matrix, and a major core structural component. However, the mechanical and thermal properties ...\nAs the most promising candidate for generation IV reactors, HTGRs have two main designs, the pebble bed reactor and the prismatic reactor. In both designs, the graphite acts as the moderator, fuel matrix, and a major core structural component. However, the mechanical and thermal properties of graphite are generally reduced by the high fluences of neutron irradiation of during reactor operation, making graphite more susceptible to failure after a significant neutron dose.\nNatural graphite such as flake graphite and microcrystalline graphite have important applications in nuclear engineering, especially in high-temperature gas-cooled reactors. Owing to requirements for low ash content and total equivalent boron content, thermal and gas purification is necessary for producing natural graphite powder with nuclear-grade purity.\nThe application of graphite materials in nuclear energy, such as a moderator and neutron reflector in more than 100 nuclear power plants and plutonium production reactors, has been expanding by the virtue of their excellent properties for good electricity and thermal conductivity, high melting point, superior thermal impact resistance and chemical stability [1\u20133].\nSince its first successful use in the CP-1 nuclear reactor in 1942, nuclear graphite has played an important role in nuclear reactors especially the h\u2026",
303
+ "raw_content": null
304
+ },
305
+ {
306
+ "title": "Understanding Graphite Nuclear Reactor: A Compressive Guide - East Carbon",
307
+ "url": "https://www.eastcarb.com/graphite-nuclear-reactor/",
308
+ "content": "The unique composition of graphite make it a perfect choice for nuclear reactors. In this guide, we will explore all possible applications of graphite material in the nuclear reactor industry. Besides, you will also learn how graphite in nuclear industry works.\nDuring the fission process in a nuclear reactor, fissile material such as uranium-235 releases energy alongside fast neutrons. The movement of these neutrons is at very high speeds unlikely to initiate further splitting on collision. Thus, the need to slow them down to thermal neutrons. The effectiveness of graphite in this role is down to its low neutron absorption capacity.\nSeveral collisions result with the slowing down of neutrons to thermal energies (low speeds). In this state, they can induce further fission reactions in the fissile material to sustain chain reaction. Graphite-moderated reactors utilize graphite in slowing down neutrons for sustained nuclear chain reaction.\nThe fuel containing uranium was in the form of pebbles and surrounded by graphite. Also broadly classified as High-Temperature Gas-Cooled Reactors (HTGRs), these used helium gas as coolant. Since helium is an inert gas it displays good heat-transfer properties allowing high operating temperatures. The result is highly improved thermal efficiency in the generation of electricity.\nThe liquid sodium is circulated through the reactor core, transferring the generated heat to a power generation unit. Sodium use is due to its excellent thermal properties and thus highly efficient heat transfer. However, its high reactivity with water and air poses a safety challenge. The Impulse Graphite Reactor (IGR) is a facility for research and experimentation.",
309
+ "raw_content": null
310
+ },
311
+ {
312
+ "title": "X-10 Graphite Reactor - Wikipedia",
313
+ "url": "https://en.wikipedia.org/wiki/X-10_Graphite_Reactor",
314
+ "content": "This steam was fed to a model steam engine, a Jensen Steam Engines #50, which drove a small generator that powered a single bulb. The engine and generator are on display at the reactor loading face, just below the staircase leading to the loading platform. The X-10 Graphite Reactor was shut ...\nThis steam was fed to a model steam engine, a Jensen Steam Engines #50, which drove a small generator that powered a single bulb. The engine and generator are on display at the reactor loading face, just below the staircase leading to the loading platform. The X-10 Graphite Reactor was shut down on November 4, 1963, after 20 years of use.\nEmilio Segr\u00e8 and Glenn Seaborg at the University of California produced 28 \u03bcg of plutonium in the 60-inch cyclotron there in May 1941 and found that it had 1.7 times the thermal neutron capture cross section of uranium-235. At the time plutonium-239 had been produced in minute quantities using cyclotrons, but it was not possible to produce large quantities that way. Compton discussed with Eugene Wigner from Princeton University how plutonium might be produced in a nuclear reactor, and with Robert Serber how the plutonium produced in a reactor might be separated from uranium.\nIt supplied the Los Alamos Laboratory with its first significant amounts of plutonium and its first reactor-bred product. Studies of these samples in comparison to those from cyclotrons revealed a higher content of plutonium-240, making the gun-type Thin Man design impossible, leading to the Gadget and Fat Man bombs of the now-ubiquitous implosion-type.\nThe X-10 Graphite Reactor is a decommissioned nuclear reactor at Oak Ridge National Laboratory in Oak Ridge, Tennessee. Formerly known as the Clinton Pile and X-10 Pile, it was the world's second artificial nuclear reactor (after Enrico Fermi's Chicago Pile-1) and the first intended for continuous operation.\nWhile Chicago Pile-1 demonstrated the feasibility of nuclear reactors, the Manhattan Project's goal of producing enough plutonium for atomic bombs required reactors a thousand times as powerful, along with facilities to chemically separate the plutonium bred in the reactors from uranium and fission products. An intermediate step was considered prudent. The next step for the plutonium project, codenamed X-10, was the construction of a semiworks where techniques and procedures could be developed and training conducted. The centerpiece of this was the X-10 Graphite Reactor.",
315
+ "raw_content": null
316
+ },
317
+ {
318
+ "title": "Why did the Chernobyl nuclear reactor use graphite and not lead? - Quora",
319
+ "url": "https://www.quora.com/Why-did-the-Chernobyl-nuclear-reactor-use-graphite-and-not-lead",
320
+ "content": "Answer (1 of 7): FIRST- WHY do you think it should have used lead? WHAT purpose would the lead have served in your design? Reactor design of the RBMK at CHORNOBYL is why graphite is used. GRAPHITE is a MODERATOR: it slows down fast neutrons to allow them to be absorbed by fissile atoms and cause...\nundefined",
321
+ "raw_content": null
322
+ },
323
+ {
324
+ "title": "Light-water reactor - Wikipedia",
325
+ "url": "https://en.wikipedia.org/wiki/Light-water_reactor",
326
+ "content": "Thermal-neutron reactors are the ... type of thermal-neutron reactor. There are three varieties of light-water reactors: the pressurized water reactor (PWR), the boiling water reactor (BWR), and (most designs of) the supercritical water reactor (SCWR). After the discoveries of fission, moderation and of the theoretical possibility of a nuclear chain reaction, early experimental results rapidly showed that natural uranium could only undergo a sustained chain reaction using graphite or heavy water ...\nThermal-neutron reactors are the most common type of nuclear reactor, and light-water reactors are the most common type of thermal-neutron reactor. There are three varieties of light-water reactors: the pressurized water reactor (PWR), the boiling water reactor (BWR), and (most designs of) the supercritical water reactor (SCWR). After the discoveries of fission, moderation and of the theoretical possibility of a nuclear chain reaction, early experimental results rapidly showed that natural uranium could only undergo a sustained chain reaction using graphite or heavy water as a moderator.\nThe zirconium alloy tubes are pressurized with helium to try to minimize pellet cladding interaction which can lead to fuel rod failure over long periods. In boiling water reactors, the fuel is similar to PWR fuel except that the bundles are \"canned\"; that is, there is a thin tube surrounding each bundle. This is primarily done to prevent local density variations from affecting neutronics and thermal hydraulics of the nuclear core on a global scale.\nThe other types of nuclear reactor in use for power generation are the heavy water moderated reactor, built by Canada (CANDU) and the Republic of India (AHWR), the advanced gas cooled reactor (AGCR), built by the United Kingdom, the liquid metal cooled reactor (LMFBR), built by the Russian Federation, the Republic of France, and Japan, and the graphite-moderated, water-cooled reactor (RBMK or LWGR), found exclusively within the Russian Federation and former Soviet states.\nMany other reactors are also light-water cooled, notably the RBMK and some military plutonium-production reactors. These are not regarded as LWRs, as they are moderated by graphite, and as a result their nuclear characteristics are very different. Although the coolant flow rate in commercial PWRs is constant, it is not in nuclear reactors used on U.S.\nA control rod is removed from or inserted into the central core of a nuclear reactor in order to control the number of neutrons which will split further uranium atoms. This in turn affects the thermal power of the reactor, the amount of steam generated, and hence the electricity produced.",
327
+ "raw_content": null
328
+ },
329
+ {
330
+ "title": "Graphite as a core material for generation IV nuclear reactors",
331
+ "url": "https://research.manchester.ac.uk/files/47465669/Graphite_Gen_IV_v13.pdf",
332
+ "content": "Search our directory of activities to find out how our research is addressing the UN Sustainable Development Goals \u00b7 Explore our research through some key areas of activity:\nundefined",
333
+ "raw_content": null
334
+ },
335
+ {
336
+ "title": "Why aren't graphite moderated reactors more popular?",
337
+ "url": "https://www.reddit.com/r/nuclear/comments/w5ucmp/why_arent_graphite_moderated_reactors_more_popular/",
338
+ "content": "Focus on peaceful use of nuclear energy tech, economics, news, and climate change \u00b7 They seem to have a bunch of advantages over light water PWR or BWR systems. Especially the gas cooled Magnox types with a neutral void coefficient and the ability to utilize natural unenriched uranium fuel\nundefined",
339
+ "raw_content": null
340
+ },
341
+ {
342
+ "title": "r/nuclear on Reddit: What's the deal with the graphite in Chernobyl?",
343
+ "url": "https://www.reddit.com/r/nuclear/comments/bz5iw9/whats_the_deal_with_the_graphite_in_chernobyl/",
344
+ "content": "57 votes, 26 comments. I watched the show and have been doing some reading about nuclear power since then, but one of the things from the show is\u2026\nWe have an elbow in one of our reactor water cleanup heat exchangers that\u2019s like 300 R/hr on contact, and with lead wrap and 1 foot of distance it\u2019s like a few hundred mR/hour.\nI watched the show and have been doing some reading about nuclear power since then, but one of the things from the show is bothering me. The graphite. The firefighter picks up a piece of the reactor graphite and puts it down right away. Within seconds his hand starts hurting, and within minutes, his skin is basically melting.\nThe graphite has the possibility of occasionally absorbing a neutron which causes it to become 'activated'. As such it's now radioactively unstable and will emit radiation. The incredible Neutron flux present inside of a power reactor core means that just about any material that is inside of the core will be activated to the degree where it is very hazardously radioactive.\nYou need to remember these graphite blocks came out of an exploded reactor core and these blocks were the channels the fuel elements were in - during that explosion they would have been contaminated with all manner of 'spicy' fission products from the instantly disintegrated fuel elements, not just the Carbon 14.",
345
+ "raw_content": null
346
+ }
347
+ ]
348
+ }
data/tavily_response.json ADDED
The diff for this file is too large to render. See raw diff
 
docs/webcrawler.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ from dotenv import load_dotenv
2
+
3
+ load_dotenv()
pyproject.toml CHANGED
@@ -7,7 +7,21 @@ authors = [
7
  { name = "Charles Azam", email = "[email protected]" }
8
  ]
9
  requires-python = ">=3.13"
10
- dependencies = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  [project.scripts]
13
  deepengineer = "deepengineer:main"
@@ -15,3 +29,6 @@ deepengineer = "deepengineer:main"
15
  [build-system]
16
  requires = ["hatchling"]
17
  build-backend = "hatchling.build"
 
 
 
 
7
  { name = "Charles Azam", email = "[email protected]" }
8
  ]
9
  requires-python = ">=3.13"
10
+ dependencies = [
11
+ "crawl4ai>=0.6.0",
12
+ "smolagents>=1.19.0",
13
+ "openai",
14
+ "datasets",
15
+ "transformers",
16
+ "litellm",
17
+ "langchain",
18
+ "fasttext-wheel",
19
+ "wikipedia-api",
20
+ "pillow",
21
+ "gradio",
22
+ "open-deep-research",
23
+ "python-dotenv>=1.1.1",
24
+ ]
25
 
26
  [project.scripts]
27
  deepengineer = "deepengineer:main"
 
29
  [build-system]
30
  requires = ["hatchling"]
31
  build-backend = "hatchling.build"
32
+
33
+ [tool.uv.sources]
34
+ open-deep-research = { git = "https://github.com/langchain-ai/open_deep_research" }
src/deepengineer/__init__.py CHANGED
@@ -1,3 +0,0 @@
1
- def main() -> None:
2
- print("Hello from deepengineer!")
3
-
 
 
 
 
src/deepengineer/webcrawler/__init__.py ADDED
File without changes
src/deepengineer/webcrawler/async_crawl.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ async def tavily_extract_async():
2
+ pass
3
+
4
+ async def tavily_crawl_async():
5
+ pass
6
+
7
+ async def crawl4ai_extract_async():
8
+ pass
9
+
10
+ async def crawl4ai_crawl_async():
11
+ pass
12
+
13
+
14
+
15
+
src/deepengineer/webcrawler/async_search.py ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import asyncio
3
+ import requests
4
+ from pydantic import BaseModel, Field
5
+ from typing import List, Optional, Literal
6
+
7
+ from linkup import LinkupClient, LinkupSourcedAnswer
8
+ from tavily import AsyncTavilyClient
9
+
10
+ from langchain_community.retrievers import ArxivRetriever
11
+ from langchain_community.utilities.pubmed import PubMedAPIWrapper
12
+
13
+ class SearchResult(BaseModel):
14
+ """Represents a single search result from any search API."""
15
+ title: str = Field(..., description="Title of the search result")
16
+ url: str = Field(..., description="URL of the result")
17
+ content: str = Field(..., description="Summary/snippet of content")
18
+ raw_content: Optional[str] = Field(None, description="Full page content if available")
19
+
20
+ class SearchResponse(BaseModel):
21
+ """Represents a search response from any search API."""
22
+ query: str = Field(..., description="The original search query")
23
+ answer: str | None = Field(None, description="Direct answer from the search API if available")
24
+ search_results: list[SearchResult] = Field(default_factory=list, description="List of search results")
25
+
26
+
27
+ def get_tavily_usage():
28
+ url = "https://api.tavily.com/usage"
29
+ headers = {"Authorization": f"Bearer {os.getenv('TAVILY_API_KEY')}"}
30
+ response = requests.request("GET", url, headers=headers)
31
+ response_json = response.json()
32
+ usage = int(response_json["key"]["usage"])
33
+ return usage
34
+
35
+
36
+ async def tavily_search_async(
37
+ search_query: str,
38
+ max_results: int = 10,
39
+ include_answer: Literal["basic", "advanced"] | None = "advanced",
40
+ include_raw_content: Literal["text", "markdown"] | None = "markdown",
41
+ include_images: bool = False,
42
+ search_depth: Literal['basic', 'advanced'] | None = "basic"
43
+ ) -> SearchResponse:
44
+ """
45
+ Performs concurrent web searches with the Tavily API
46
+ """
47
+ tavily_async_client = AsyncTavilyClient()
48
+
49
+ search_response = await tavily_async_client.search(
50
+ query=search_query,
51
+ search_depth=search_depth,
52
+ include_answer=include_answer,
53
+ include_raw_content=include_raw_content,
54
+ max_results=max_results,
55
+ include_images=include_images
56
+ )
57
+
58
+ search_results = [
59
+ SearchResult(
60
+ title=result.get('title', ''),
61
+ url=result.get('url', ''),
62
+ content=result.get('content', ''),
63
+ raw_content=result.get('raw_content')
64
+ )
65
+ for result in search_response.get('results', [])
66
+ ]
67
+
68
+ # Convert to our Pydantic models
69
+ responses: SearchResponse = SearchResponse(
70
+ query=search_query,
71
+ answer=search_response.get('answer', None),
72
+ search_results=search_results
73
+ )
74
+ return responses
75
+
76
+
77
+ def get_linkup_balance():
78
+ url = "https://api.linkup.so/v1/credits/balance"
79
+
80
+ headers = {"Authorization": f"Bearer {os.getenv('LINKUP_API_KEY')}"}
81
+
82
+ response = requests.request("GET", url, headers=headers)
83
+ response_json = response.json()
84
+ balance = float(response_json["balance"])
85
+ return balance
86
+
87
+
88
+ async def async_linkup_search(
89
+ search_query: str,
90
+ depth: Literal["standard", "deep"] = "standard",
91
+ output_type: Literal['searchResults', 'sourcedAnswer', 'structured'] = "sourcedAnswer",
92
+ include_images: bool = False,
93
+ ) -> SearchResponse:
94
+ """
95
+ Performs concurrent web searches using the Linkup API.
96
+ """
97
+
98
+ client = LinkupClient()
99
+ search_response: LinkupSourcedAnswer = await client.async_search(
100
+ query=search_query,
101
+ depth=depth,
102
+ output_type=output_type,
103
+ include_images=include_images
104
+ )
105
+
106
+
107
+
108
+ search_results = [
109
+ SearchResult(
110
+ title=result.name,
111
+ url=result.url,
112
+ content=result.snippet,
113
+ raw_content=None,
114
+ )
115
+ for result in search_response.sources
116
+ ]
117
+
118
+ # Convert to our Pydantic models
119
+ responses: SearchResponse = SearchResponse(
120
+ query=search_query,
121
+ answer=search_response.answer,
122
+ search_results=search_results
123
+ )
124
+ return responses
125
+
126
+
127
+
128
+
129
+ class ArxivSearchParams(BaseModel):
130
+ """Parameters for arXiv search."""
131
+ load_max_docs: int = Field(default=5, ge=1, le=20, description="Maximum number of documents to return per query")
132
+ get_full_documents: bool = Field(default=True, description="Whether to fetch full text of documents")
133
+ load_all_available_meta: bool = Field(default=True, description="Whether to load all available metadata")
134
+
135
+
136
+ class PubMedSearchParams(BaseModel):
137
+ """Parameters for PubMed search."""
138
+ top_k_results: int = Field(default=5, ge=1, le=20, description="Maximum number of documents to return per query")
139
+ email: Optional[str] = Field(None, description="Email address for PubMed API. Required by NCBI.")
140
+ api_key: Optional[str] = Field(None, description="API key for PubMed API for higher rate limits")
141
+ doc_content_chars_max: int = Field(default=4000, ge=100, le=10000, description="Maximum characters for document content")
142
+
143
+
144
+ async def arxiv_search_async(
145
+ search_query: str,
146
+ ) -> SearchResponse:
147
+ raise NotImplementedError("Arxiv search is not implemented yet")
148
+
149
+
150
+ async def pubmed_search_async(
151
+ query: str,
152
+ ) -> SearchResponse:
153
+ raise NotImplementedError("PubMed search is not implemented yet")
src/deepengineer/webcrawler/utils.py ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+
4
+ def get_config_value(value):
5
+ """
6
+ Helper function to handle string, dict, and enum cases of configuration values
7
+ """
8
+ if isinstance(value, str):
9
+ return value
10
+ elif isinstance(value, dict):
11
+ return value
12
+ else:
13
+ return value.value
14
+
15
+ def get_search_params(search_api: str, search_api_config: Optional[Dict[str, Any]]) -> Dict[str, Any]:
16
+ """
17
+ Filters the search_api_config dictionary to include only parameters accepted by the specified search API.
18
+
19
+ Args:
20
+ search_api (str): The search API identifier (e.g., "exa", "tavily").
21
+ search_api_config (Optional[Dict[str, Any]]): The configuration dictionary for the search API.
22
+
23
+ Returns:
24
+ Dict[str, Any]: A dictionary of parameters to pass to the search function.
25
+ """
26
+ # Define accepted parameters for each search API
27
+ SEARCH_API_PARAMS = {
28
+ "exa": ["max_characters", "num_results", "include_domains", "exclude_domains", "subpages"],
29
+ "tavily": ["max_results", "topic"],
30
+ "perplexity": [], # Perplexity accepts no additional parameters
31
+ "arxiv": ["load_max_docs", "get_full_documents", "load_all_available_meta"],
32
+ "pubmed": ["top_k_results", "email", "api_key", "doc_content_chars_max"],
33
+ "linkup": ["depth"],
34
+ "googlesearch": ["max_results"],
35
+ }
36
+
37
+ # Get the list of accepted parameters for the given search API
38
+ accepted_params = SEARCH_API_PARAMS.get(search_api, [])
39
+
40
+ # If no config provided, return an empty dict
41
+ if not search_api_config:
42
+ return {}
43
+
44
+ # Filter the config to only include accepted parameters
45
+ return {k: v for k, v in search_api_config.items() if k in accepted_params}
46
+
47
+ def deduplicate_and_format_sources(
48
+ search_responses: SearchResponses,
49
+ config: Optional[DeduplicationConfig] = None
50
+ ) -> str:
51
+ """
52
+ Takes a list of search responses and formats them into a readable string.
53
+ Limits the raw_content to approximately max_tokens_per_source tokens.
54
+
55
+ Args:
56
+ search_responses: List of search responses
57
+ config: Configuration for deduplication and formatting
58
+
59
+ Returns:
60
+ str: Formatted string with deduplicated sources
61
+ """
62
+ if config is None:
63
+ config = DeduplicationConfig()
64
+
65
+ # Collect all results
66
+ sources_list: List[SearchResult] = []
67
+ for response in search_responses:
68
+ sources_list.extend(response.results)
69
+
70
+ # Deduplicate by URL
71
+ if config.deduplication_strategy == "keep_first":
72
+ unique_sources: Dict[str, SearchResult] = {}
73
+ for source in sources_list:
74
+ if source.url not in unique_sources:
75
+ unique_sources[source.url] = source
76
+ elif config.deduplication_strategy == "keep_last":
77
+ unique_sources = {source.url: source for source in sources_list}
78
+ else:
79
+ raise ValueError(f"Invalid deduplication strategy: {config.deduplication_strategy}")
80
+
81
+ # Format output
82
+ formatted_text = "Content from sources:\n"
83
+ for i, source in enumerate(unique_sources.values(), 1):
84
+ formatted_text += f"{'='*80}\n" # Clear section separator
85
+ formatted_text += f"Source: {source.title}\n"
86
+ formatted_text += f"{'-'*80}\n" # Subsection separator
87
+ formatted_text += f"URL: {source.url}\n===\n"
88
+ formatted_text += f"Most relevant content from source: {source.content}\n===\n"
89
+ if config.include_raw_content:
90
+ # Using rough estimate of 4 characters per token
91
+ char_limit = config.max_tokens_per_source * 4
92
+ # Handle None raw_content
93
+ raw_content = source.raw_content or ''
94
+ if len(raw_content) > char_limit:
95
+ raw_content = raw_content[:char_limit] + "... [truncated]"
96
+ formatted_text += f"Full source content limited to {config.max_tokens_per_source} tokens: {raw_content}\n\n"
97
+ formatted_text += f"{'='*80}\n\n" # End section separator
98
+
99
+ return formatted_text.strip()
100
+
101
+ def format_sections(sections: list[Section]) -> str:
102
+ """ Format a list of sections into a string """
103
+ formatted_str = ""
104
+ for idx, section in enumerate(sections, 1):
105
+ formatted_str += f"""
106
+ {'='*60}
107
+ Section {idx}: {section.name}
108
+ {'='*60}
109
+ Description:
110
+ {section.description}
111
+ Requires Research:
112
+ {section.research}
113
+
114
+ Content:
115
+ {section.content if section.content else '[Not yet written]'}
116
+
117
+ """
118
+ return formatted_str
119
+ search_queries: SearchQueries,
120
+ params: Optional[PubMedSearchParams] = None
121
+
122
+
123
+ TAVILY_SEARCH_DESCRIPTION = (
124
+ "A search engine optimized for comprehensive, accurate, and trusted results. "
125
+ "Useful for when you need to answer questions about current events."
126
+ )
127
+
128
+ @tool(description=TAVILY_SEARCH_DESCRIPTION)
129
+ async def tavily_search(
130
+ queries: SearchQueries,
131
+ max_results: Annotated[int, InjectedToolArg] = 5,
132
+ topic: Annotated[Literal["general", "news", "finance"], InjectedToolArg] = "general",
133
+ config: RunnableConfig = None
134
+ ) -> str:
135
+ """
136
+ Fetches results from Tavily search API.
137
+
138
+ Args:
139
+ queries: List of search queries
140
+ max_results: Maximum number of results to return
141
+ topic: Topic to filter results by
142
+
143
+ Returns:
144
+ str: A formatted string of search results
145
+ """
146
+ # Use tavily_search_async with include_raw_content=True to get content directly
147
+ params = TavilySearchParams(max_results=max_results, topic=topic, include_raw_content=True)
148
+ search_results = await tavily_search_async(queries, params)
149
+
150
+ # Format the search results directly using the raw_content already provided
151
+ formatted_output = f"Search results: \n\n"
152
+
153
+ # Deduplicate results by URL
154
+ unique_results: Dict[str, Dict[str, Any]] = {}
155
+ for response in search_results:
156
+ for result in response.results:
157
+ url = result.url
158
+ if url not in unique_results:
159
+ unique_results[url] = {
160
+ "title": result.title,
161
+ "url": result.url,
162
+ "content": result.content,
163
+ "raw_content": result.raw_content,
164
+ "query": response.query
165
+ }
166
+
167
+ async def noop():
168
+ return None
169
+
170
+ configurable = Configuration.from_runnable_config(config)
171
+ max_char_to_include = 30_000
172
+ # TODO: share this behavior across all search implementations / tools
173
+ if configurable.process_search_results == "summarize":
174
+ if configurable.summarization_model_provider == "anthropic":
175
+ extra_kwargs = {"betas": ["extended-cache-ttl-2025-04-11"]}
176
+ else:
177
+ extra_kwargs = {}
178
+
179
+ summarization_model = init_chat_model(
180
+ model=configurable.summarization_model,
181
+ model_provider=configurable.summarization_model_provider,
182
+ max_retries=configurable.max_structured_output_retries,
183
+ **extra_kwargs
184
+ )
185
+ summarization_tasks = [
186
+ noop() if not result.get("raw_content") else summarize_webpage(summarization_model, result['raw_content'][:max_char_to_include])
187
+ for result in unique_results.values()
188
+ ]
189
+ summaries = await asyncio.gather(*summarization_tasks)
190
+ unique_results = {
191
+ url: {'title': result['title'], 'content': result['content'] if summary is None else summary}
192
+ for url, result, summary in zip(unique_results.keys(), unique_results.values(), summaries)
193
+ }
194
+ elif configurable.process_search_results == "split_and_rerank":
195
+ embeddings = init_embeddings("openai:text-embedding-3-small")
196
+ results_by_query = itertools.groupby(unique_results.values(), key=lambda x: x['query'])
197
+ all_retrieved_docs = []
198
+ for query, query_results in results_by_query:
199
+ retrieved_docs = split_and_rerank_search_results(embeddings, query, query_results)
200
+ all_retrieved_docs.extend(retrieved_docs)
201
+
202
+ stitched_docs = stitch_documents_by_url(all_retrieved_docs)
203
+ unique_results = {
204
+ doc.metadata['url']: {'title': doc.metadata['title'], 'content': doc.page_content}
205
+ for doc in stitched_docs
206
+ }
207
+
208
+ # Format the unique results
209
+ for i, (url, result) in enumerate(unique_results.items()):
210
+ formatted_output += f"\n\n--- SOURCE {i+1}: {result['title']} ---\n"
211
+ formatted_output += f"URL: {url}\n\n"
212
+ formatted_output += f"SUMMARY:\n{result['content']}\n\n"
213
+ if result.get('raw_content'):
214
+ formatted_output += f"FULL CONTENT:\n{result['raw_content'][:max_char_to_include]}" # Limit content size
215
+ formatted_output += "\n\n" + "-" * 80 + "\n"
216
+
217
+ if unique_results:
218
+ return formatted_output
219
+ else:
220
+ return "No valid search results found. Please try different search queries or use a different search API."
221
+
222
+
223
+
224
+ async def select_and_execute_search(search_api: str, query_list: SearchQueries, params_to_pass: dict) -> str:
225
+ """Select and execute the appropriate search API.
226
+
227
+ Args:
228
+ search_api: Name of the search API to use
229
+ query_list: List of search queries to execute
230
+ params_to_pass: Parameters to pass to the search API
231
+
232
+ Returns:
233
+ Formatted string containing search results
234
+
235
+ Raises:
236
+ ValueError: If an unsupported search API is specified
237
+ """
238
+ if search_api == "tavily":
239
+ # Tavily search tool used with both workflow and agent
240
+ # and returns a formatted source string
241
+ return await tavily_search.ainvoke({'queries': query_list, **params_to_pass})
242
+ elif search_api == "duckduckgo":
243
+ # DuckDuckGo search tool used with both workflow and agent
244
+ return await duckduckgo_search.ainvoke({'search_queries': query_list})
245
+ elif search_api == "perplexity":
246
+ search_results = perplexity_search(query_list)
247
+ elif search_api == "exa":
248
+ params = ExaSearchParams(**params_to_pass) if params_to_pass else None
249
+ search_results = await exa_search(query_list, params)
250
+ elif search_api == "arxiv":
251
+ params = ArxivSearchParams(**params_to_pass) if params_to_pass else None
252
+ search_results = await arxiv_search_async(query_list, params)
253
+ elif search_api == "pubmed":
254
+ params = PubMedSearchParams(**params_to_pass) if params_to_pass else None
255
+ search_results = await pubmed_search_async(query_list, params)
256
+ elif search_api == "linkup":
257
+ params = LinkupSearchParams(**params_to_pass) if params_to_pass else None
258
+ search_results = await linkup_search(query_list, params)
259
+ elif search_api == "googlesearch":
260
+ params = GoogleSearchParams(**params_to_pass) if params_to_pass else None
261
+ search_results = await google_search_async(query_list, params)
262
+ elif search_api == "azureaisearch":
263
+ params = AzureAISearchParams(**params_to_pass) if params_to_pass else None
264
+ search_results = await azureaisearch_search_async(query_list, params)
265
+ else:
266
+ raise ValueError(f"Unsupported search API: {search_api}")
267
+
268
+ config = DeduplicationConfig(max_tokens_per_source=4000, deduplication_strategy="keep_first")
269
+ return deduplicate_and_format_sources(search_results, config)
270
+
271
+
272
+
273
+
274
+
275
+ async def summarize_webpage(model: BaseChatModel, webpage_content: str) -> str:
276
+ """Summarize webpage content."""
277
+ try:
278
+ user_input_content = "Please summarize the article"
279
+ if isinstance(model, ChatAnthropic):
280
+ user_input_content = [{
281
+ "type": "text",
282
+ "text": user_input_content,
283
+ "cache_control": {"type": "ephemeral", "ttl": "1h"}
284
+ }]
285
+
286
+ summary = await model.with_structured_output(Summary).with_retry(stop_after_attempt=2).ainvoke([
287
+ {"role": "system", "content": SUMMARIZATION_PROMPT.format(webpage_content=webpage_content)},
288
+ {"role": "user", "content": user_input_content},
289
+ ])
290
+ except:
291
+ # fall back on the raw content
292
+ return webpage_content
293
+
294
+ def format_summary(summary: Summary):
295
+ excerpts_str = "\n".join(f'- {e}' for e in summary.key_excerpts)
296
+ return f"""<summary>\n{summary.summary}\n</summary>\n\n<key_excerpts>\n{excerpts_str}\n</key_excerpts>"""
297
+
298
+ return format_summary(summary)
299
+
300
+
301
+ def split_and_rerank_search_results(
302
+ embeddings: Embeddings,
303
+ query: str,
304
+ search_results: List[SearchResult],
305
+ config: Optional[SplitAndRerankConfig] = None
306
+ ):
307
+ """Split and rerank search results using embeddings."""
308
+ if config is None:
309
+ config = SplitAndRerankConfig()
310
+
311
+ # split webpage content into chunks
312
+ text_splitter = RecursiveCharacterTextSplitter(
313
+ chunk_size=config.chunk_size,
314
+ chunk_overlap=config.chunk_overlap,
315
+ add_start_index=True
316
+ )
317
+ documents = [
318
+ Document(
319
+ page_content=result.raw_content or result.content,
320
+ metadata={"url": result.url, "title": result.title}
321
+ )
322
+ for result in search_results
323
+ ]
324
+ all_splits = text_splitter.split_documents(documents)
325
+
326
+ # index chunks
327
+ vector_store = InMemoryVectorStore(embeddings)
328
+ vector_store.add_documents(documents=all_splits)
329
+
330
+ # retrieve relevant chunks
331
+ retrieved_docs = vector_store.similarity_search(query, k=config.max_chunks)
332
+ return retrieved_docs
333
+
334
+
335
+ def stitch_documents_by_url(documents: list[Document]) -> list[Document]:
336
+ url_to_docs: defaultdict[str, list[Document]] = defaultdict(list)
337
+ url_to_snippet_hashes: defaultdict[str, set[str]] = defaultdict(set)
338
+ for doc in documents:
339
+ snippet_hash = hashlib.sha256(doc.page_content.encode()).hexdigest()
340
+ url = doc.metadata['url']
341
+ # deduplicate snippets by the content
342
+ if snippet_hash in url_to_snippet_hashes[url]:
343
+ continue
344
+
345
+ url_to_docs[url].append(doc)
346
+ url_to_snippet_hashes[url].add(snippet_hash)
347
+
348
+ # stitch retrieved chunks into a single doc per URL
349
+ stitched_docs = []
350
+ for docs in url_to_docs.values():
351
+ stitched_doc = Document(
352
+ page_content="\n\n".join([f"...{doc.page_content}..." for doc in docs]),
353
+ metadata=cast(Document, docs[0]).metadata
354
+ )
355
+ stitched_docs.append(stitched_doc)
356
+
357
+ return stitched_docs
358
+
359
+
360
+ def get_today_str() -> str:
361
+ """Get current date in a human-readable format."""
362
+ return datetime.datetime.now().strftime("%a %b %-d, %Y")
363
+
364
+
365
+ async def load_mcp_server_config(path: str) -> dict:
366
+ """Load MCP server configuration from a file."""
367
+
368
+ def _load():
369
+ with open(path, "r") as f:
370
+ config = json.load(f)
371
+ return config
372
+
373
+ config = await asyncio.to_thread(_load)
374
+ return config
tests/webcrawler/test_utils.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ import pytest
3
+ from deepengineer.webcrawler.async_search import (
4
+ tavily_search_async,
5
+ SearchResponse,
6
+ get_tavily_usage,
7
+ async_linkup_search,
8
+ get_linkup_balance
9
+ )
10
+
11
+
12
+ @pytest.mark.expensive
13
+ def test_tavily_search_async():
14
+
15
+ usage_before = get_tavily_usage()
16
+ print(usage_before)
17
+
18
+
19
+ response = asyncio.run(
20
+ tavily_search_async(
21
+ search_query="Would it be possible to make a thermal reactor with graphite and lead?",
22
+ )
23
+ )
24
+ print(response.answer)
25
+ assert response is not None
26
+ assert isinstance(response, SearchResponse)
27
+ assert (
28
+ response.query
29
+ == "Would it be possible to make a thermal reactor with graphite and lead?"
30
+ )
31
+ assert response.answer is not None
32
+ assert response.search_results is not None
33
+ assert len(response.search_results) == 10
34
+ assert response.search_results[0].title is not None
35
+ assert response.search_results[0].url is not None
36
+ assert response.search_results[0].content is not None
37
+ assert any(result.raw_content is not None for result in response.search_results)
38
+
39
+ usage_after = get_tavily_usage()
40
+ print(usage_after)
41
+ assert usage_after == usage_before + 1
42
+
43
+ @pytest.mark.expensive
44
+ def test_linkup_search_async():
45
+
46
+ balance_before = get_linkup_balance()
47
+ print(balance_before)
48
+
49
+ response = asyncio.run(
50
+ async_linkup_search(
51
+ search_query="Would it be possible to make a thermal reactor with graphite and lead?",
52
+ )
53
+ )
54
+ print(response.answer)
55
+ assert response is not None
56
+ assert isinstance(response, SearchResponse)
57
+ assert (
58
+ response.query
59
+ == "Would it be possible to make a thermal reactor with graphite and lead?"
60
+ )
61
+ assert len(response.search_results) >= 10
62
+ assert response.search_results[0].title is not None
63
+ assert response.search_results[0].url is not None
64
+ assert response.search_results[0].content is not None
65
+ assert response.search_results[0].raw_content is None
66
+
67
+ balance_after = get_linkup_balance()
68
+ print(balance_after)
69
+ assert balance_after == balance_before - 0.005
uv.lock ADDED
The diff for this file is too large to render. See raw diff