diff --git a/config.json b/config.json index 2cc7311..7697ba4 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,13 @@ -{ - "queryURL":"https://api.siliconflow.cn/v1/chat/completions", - "embeddingURL":"https://api.siliconflow.cn/v1/embeddings", - "key":"sk-xsoegkpdvqlbsoodrnaygqycdvhplkyowivkzlszqfytpvti", - "queryModel":"Qwen/Qwen3-8B", - "embeddingModel":"Qwen/Qwen3-Embedding-0.6B" +{ + "queryURL":"https://api.siliconflow.cn/v1/chat/completions", + "embeddingURL":"https://api.siliconflow.cn/v1/embeddings", + "rerankURL":"https://api.siliconflow.cn/v1/rerank", + "vectorDBURL":"http://localhost:8000", + "key":"sk-xsoegkpdvqlbsoodrnaygqycdvhplkyowivkzlszqfytpvti", + "queryModel":"Qwen/Qwen3-8B", + "embeddingModel":"Qwen/Qwen3-Embedding-0.6B", + "rerankModel":"Qwen/Qwen3-Reranker-0.6B", + "retriveTopK":20, + "rerankTopK":10, + "memory":true } \ No newline at end of file diff --git a/data/data_embed.txt b/data/data_embed.txt deleted file mode 100644 index b547c99..0000000 --- a/data/data_embed.txt +++ /dev/null @@ -1 +0,0 @@ -[-0.015927,-0.027443,-0.011271,-0.128069,0.002695,0.090171,-0.000375,-0.01707,-0.08331,-0.001899,0.01021,-0.022216,0.025156,-0.010863,-0.054233,0.070569,-0.032344,0.028587,0.020011,-0.006983,0.00195,0.000383,0.00535,0.009597,-0.054887,0.00148,-0.015355,0.118922,0.036755,0.010536,0.02924,-0.038715,-0.068282,-0.014947,-0.024993,-0.013232,0.000155,-0.014375,-0.017806,0.013558,-0.01413,0.003716,0.018132,0.01025,0.012823,-0.053253,0.019031,0.002267,0.084944,0.003002,-0.067628,-0.012742,0.009842,0.002215,0.006126,-0.014784,0.003573,-0.010332,-0.009434,-0.007637,-0.044759,-0.012415,0.04966,-0.002736,0.032671,-0.009883,-0.004411,-0.047699,-0.068282,-0.052273,-0.012497,-0.034958,-0.036265,0.02287,0.017642,-0.002532,-0.002532,-0.0263,0.008209,0.014375,0.024013,0.040838,-0.009515,-0.013395,0.003716,0.039695,0.034304,0.002379,0.003063,0.002501,-0.049333,-0.000518,-0.029077,-0.039205,0.02728,-0.020909,0.010169,-0.03022,-0.013803,0.010455,-0.041655,-0.041328,0.02483,-0.006452,-0.061094,0.025483,-0.094745,-0.010781,-0.015764,-0.05162,-0.006207,-0.001159,0.02532,0.035938,-0.010863,-0.010005,0.016009,-0.026137,0.024503,-0.009965,-0.000735,-0.010618,-0.037081,-0.019847,-0.002338,0.035774,-0.035121,-0.017397,0.019194,-0.028424,0.045739,-0.015845,-0.02826,-0.02777,0.008209,0.017561,0.019766,0.020011,0.036918,-0.021726,-0.057501,-0.021236,0.02679,-0.024503,0.01266,0.015029,0.002256,0.015192,0.026137,-0.060768,0.025647,0.01609,-0.045412,0.025973,-0.007718,-0.013885,-0.015682,0.021399,0.024013,0.018704,0.026463,-0.012905,-0.00392,-0.010373,-0.009066,0.021563,-0.000842,-0.002757,0.02973,-0.048679,-0.035774,0.013477,-0.004308,-0.010455,-0.004084,-0.006044,-0.058154,-0.13199,-0.028097,-0.026137,0.021563,-0.014048,0.006861,-0.01413,-0.019031,-0.008862,0.034958,-0.069262,0.001409,-0.005227,-0.060441,-0.042145,-0.049006,-0.000929,-0.049333,-0.035448,0.021236,0.039858,-0.026137,-0.021236,-0.021073,-0.012578,0.047699,-0.001281,-0.013477,-0.028097,-0.011353,-0.013722,-0.021236,-0.018132,-0.000508,0.043779,-0.046066,-0.032507,-0.014947,-0.016907,0.018949,0.02385,0.013395,0.02532,0.02483,0.006575,-0.043452,0.002052,0.018867,-0.028587,0.021073,0.015764,0.000715,0.029567,0.000197,-0.018377,-0.002634,0.041819,0.061748,0.007433,0.010536,-0.036591,0.082984,-0.017642,-0.000679,-0.011271,0.065015,0.009311,-0.035448,0.032834,0.004758,0.046719,-0.035448,0.002634,0.002695,-0.061421,-0.045412,0.094745,0.013395,-0.02924,0.019847,0.023686,0.027607,-0.013885,0.061094,-0.026627,0.010373,0.005922,0.044106,0.017152,-0.0263,0.053253,-0.024666,0.020746,0.011516,0.014784,-0.02483,-0.036755,0.033161,0.035611,0.012415,-0.038225,0.009965,0.006003,0.023033,0.001787,0.044759,0.00633,0.029567,0.044759,0.035938,-0.025156,-0.038388,-0.065995,0.046392,-0.010455,-0.064361,0.072529,-0.053907,-0.02679,-0.023196,0.049333,0.035448,-0.038551,-0.014293,-0.038225,-0.036591,0.031691,-0.003165,0.007024,0.042145,-0.011516,-0.014702,-0.044759,0.078736,-0.006167,0.013885,0.019357,-0.035611,-0.0263,-0.073836,0.019194,-0.005677,-0.016662,-0.003492,0.030384,-0.034631,0.04966,0.0078,0.004308,-0.041002,0.031854,0.02777,0.02973,0.033651,0.062401,0.007147,0.009393,0.021073,0.01462,-0.0263,0.009434,0.009842,0.02483,-0.003042,0.005922,0.010618,-0.054887,-0.04966,-0.057501,-0.000648,0.089518,-0.027117,0.025156,0.021563,0.028097,0.02777,-0.005881,-0.000853,0.027117,-0.009842,0.015519,-0.058154,0.008535,-0.029404,-0.062728,0.037081,0.020909,-0.02287,-0.024993,0.023686,-0.039532,0.025156,-0.008249,-0.011108,-0.02532,-0.034794,-0.02336,0.064361,0.057827,0.063381,-0.008249,0.047699,0.011761,0.049006,-0.019602,-0.016662,-0.01364,-0.0526,0.023033,0.046392,-0.019766,-0.003941,-0.001654,0.033161,0.007718,-0.043452,0.000316,0.020583,0.01609,-0.118268,0.015519,-0.007024,0.019929,0.028587,0.055867,-0.050966,0.029894,0.001654,-0.024176,-0.018704,-0.004513,-0.006167,0.006371,0.071549,-0.046066,-0.057174,-0.000781,-0.037408,-0.000145,0.118268,-0.0526,0.006534,-0.006616,-0.016907,0.013722,-0.02483,-0.04966,-0.012987,-0.035611,-0.031364,-0.021073,0.021073,0.061748,0.044106,-0.002267,0.013313,-0.001725,-0.000345,0.017479,0.045739,-0.013477,-0.007188,-0.020746,0.009965,0.065668,0.031037,0.003226,-0.038551,0.038388,-0.005023,0.002879,-0.01119,0.003002,0.001501,-0.008576,0.025973,0.076776,0.002185,-0.057827,-0.009679,0.101279,0.02336,0.038225,-0.033161,0.079717,0.001429,0.016989,-0.005595,-0.000124,-0.051946,-0.012088,0.000439,0.033324,-0.052273,-0.024013,-0.018296,-0.025973,-0.000636,-0.000355,-0.059461,-0.020828,-0.037245,0.022216,-0.032344,-0.014212,0.009842,-0.018867,0.05554,-0.040675,-0.034958,-0.017642,-0.046392,-0.02532,0.025973,0.062401,0.02679,-0.04966,-0.03022,-0.002073,-0.02728,-0.055214,-0.060768,-0.005227,-0.019602,0.003492,0.017806,0.000837,-0.05358,-0.00633,-0.031364,-0.010863,-0.00339,0.019112,0.003553,-0.009475,0.024176,0.031037,-0.063708,-0.039695,0.023033,0.063055,0.011108,0.033488,0.041492,0.082657,0.024503,-0.009066,0.012823,0.050966,0.02826,-0.031201,-0.016254,0.007718,0.034468,-0.013477,0.005962,0.032181,-0.011108,0.062401,-0.005595,0.034468,0.005125,0.011925,-0.034141,-0.009801,0.027933,-0.016335,-0.000858,-0.02728,-0.000069,0.023196,-0.001858,0.021073,0.016417,-0.0263,0.042472,-0.017724,0.024013,-0.010332,0.023523,-0.011435,-0.006943,-0.011925,-0.021236,0.012333,-0.026627,0.030874,0.006412,-0.008209,0.042472,0.008249,0.035121,-0.015845,0.02434,-0.028587,0.045739,-0.011925,-0.034631,-0.08135,-0.041819,-0.008086,-0.011925,-0.075796,0.00633,0.025647,-0.025156,0.000179,-0.010373,0.001011,0.047046,0.006616,0.015519,0.017887,-0.004084,-0.07743,0.022543,0.005922,0.038388,-0.024666,-0.004717,0.004594,-0.004349,0.007678,0.014784,0.043452,0.014865,-0.000904,-0.041328,0.008944,-0.005595,-0.017806,-0.007392,0.004533,0.02385,0.032181,-0.001337,0.010332,-0.019357,-0.050313,-0.096052,0.04966,-0.000919,-0.004084,-0.001736,-0.032344,-0.006983,-0.004799,-0.00195,0.040348,0.033161,-0.035774,-0.006248,-0.021073,-0.034794,-0.005166,0.017315,-0.002358,0.038061,0.011108,-0.005166,-0.004227,0.052927,-0.014702,-0.021889,-0.050966,-0.018622,-0.001705,0.02483,0.014457,0.010863,0.024013,0.042799,-0.02483,0.043125,0.013313,-0.007555,0.000776,-0.02532,0.038225,0.004268,0.017642,0.017397,-0.090171,-0.007147,-0.017887,-0.025156,-0.015845,-0.020909,-0.063381,0.032017,0.006575,0.022379,-0.015764,0.002797,-0.003165,-0.003451,0.056847,0.003002,-0.061094,-0.017887,-0.023196,-0.048679,-0.010005,-0.01217,-0.009924,0.024993,-0.007473,0.037245,-0.003226,-0.031691,-0.019766,0.020909,-0.02532,-0.003063,-0.001603,0.045086,-0.013967,0.036265,0.032017,-0.010536,-0.049333,0.03071,-0.027933,0.044432,-0.02336,-0.028587,0.011435,-0.00682,0.006779,-0.009597,-0.002154,-0.044106,-0.060114,0.041492,0.039695,-0.028424,-0.063381,-0.01707,0.05064,-0.005309,-0.000096,-0.010087,-0.012823,0.035774,-0.01511,0.010373,0.021399,-0.02385,-0.007473,0.021399,-0.011761,-0.037571,-0.08037,0.007188,-0.016009,0.016744,0.007392,-0.002736,0.001429,0.033324,0.02434,0.047373,0.009393,0.011026,-0.004615,-0.023523,0.016989,-0.017724,-0.002542,0.008658,-0.000868,-0.013722,0.029077,0.034141,-0.038388,-0.045086,0.008372,-0.004145,-0.028587,-0.008249,0.032507,0.039858,0.033978,0.042145,-0.036265,-0.00339,0.016172,0.049333,0.008617,-0.014375,-0.029404,0.008372,0.001899,0.007923,-0.022543,0.011516,0.028914,-0.019112,-0.007228,0.011353,-0.009189,-0.029077,0.010332,0.000368,-0.001348,0.003533,0.003859,0.006534,0.015029,0.045739,-0.015682,0.01511,0.027443,0.02483,0.001552,-0.008821,0.040185,-0.05652,0.048353,0.00146,0.05064,-0.029894,0.00072,0.012006,0.023196,0.026463,-0.02434,0.007555,0.045412,0.004696,0.045739,-0.003818,0.009066,0.006493,0.02287,0.011026,-0.003635,-0.003492,-0.003083,-0.019929,0.006943,-0.019929,-0.024666,-0.020174,-0.013395,-0.004145,0.015437,0.010781,0.029567,0.023523,-0.032997,-0.049333,-0.012905,-0.006657,-0.053253,0.035611,0.046066,0.018622,0.028424,-0.02434,0.041002,0.01511,-0.013313,0.041492,-0.071222,0.053907,0.002981,-0.030547,0.011598,0.004819,0.006657,-0.008739,-0.003287,0.032834,0.063708,-0.017152,-0.030057,-0.043779,0.034141,-0.008984,-0.013068,-0.013558,-0.016172,-0.018541,-0.011435,-0.058481,-0.036591,0.005023,0.039042,0.009597,0.012987,0.000048,-0.002736,0.007963,-0.007433,0.002246,0.043452,-0.044432,0.024176,0.011761,-0.006248,-0.030547,0.043452,-0.019847,0.030384,-0.020909,0.015519,-0.004778,-0.006657,-0.008454,-0.01021,0.018051,-0.001909,0.007718,-0.020501,-0.014212,0.007596,-0.062074,0.008413,0.046392,0.007555,-0.011271,0.010455,0.002961,-0.035284,0.002287,0.020011,0.020909,0.003573,0.036101,-0.017315,-0.046066,-0.004411,-0.020746,0.059787,0.017969,-0.004696,0.008862,-0.034468,-0.092131,0.003573,-0.035774,0.024503,-0.028914,0.019194,-0.02532,-0.021073,0.030057,-0.01511,0.018541,0.02875,-0.014212,0.024176,0.027933,-0.014865,0.016907,0.044106,0.0107,-0.010332,-0.028587,-0.048679,-0.026627,0.003287,0.023523,-0.008944,0.008984,-0.019847,0.038551,0.016009,-0.008086,0.000771,0.024666,-0.00731,0.005758,0.00195,-0.059461,-0.007106,0.035938,-0.018051,-0.00829,0.001991,-0.003185,0.020664,-0.02336,-0.038061,0.024013,0.000271,0.029077,0.014865,-0.012742,0.011761,-0.004308,-0.009107,0.021563,-0.012823,0.036101,0.058154,0.009229,0.010087,-0.021236,-0.035121,0.001297,-0.022216,-0.046066,0.044106,0.037081,0.051293,-0.035774,-0.011516,-0.062074,0.037081,0.087558,-0.01168,0.05652,0.004962,-0.026463,-0.002879,0.019276,0.02679,0.026627,-0.039205,0.017315,0.019602,0.013477,0.012742,-0.028097,-0.017561,0.045412,0.01462,-0.018459,0.031201,0.014048,0.006371,-0.012578,0.018296,0.007147,0.031037,-0.020011,-0.013803,-0.000776,0.007555,-0.005636,-0.042799,0.004962,-0.005595,0.018541,0.02826][-0.033295,-0.064838,-0.012617,-0.051169,0.061333,-0.021291,-0.063787,0.004819,-0.041006,-0.002891,0.020678,-0.014983,0.027688,-0.010514,-0.048015,0.017173,-0.059931,0.041356,-0.031893,0.025935,-0.107947,-0.048716,0.005695,-0.032945,-0.039779,-0.038377,-0.02541,-0.008806,-0.05152,-0.012792,0.057829,0.014019,-0.02243,-0.01875,-0.002672,-0.016735,-0.035749,0.02576,-0.055726,0.093928,-0.02243,-0.011566,0.057478,-0.056777,-0.047314,-0.042057,0.024533,0.001796,-0.043985,0.019627,-0.033646,0.001019,-0.045912,0.034171,-0.015771,0.05152,-0.010733,-0.001287,-0.027863,0.004162,-0.04013,-0.025234,-0.016472,-0.0046,0.015333,-0.016648,0.038728,0.010383,-0.027337,-0.007272,0.031368,-0.008455,-0.026461,-0.022255,0.023131,-0.00425,-0.02173,0.05923,-0.017261,-0.002201,0.031543,-0.014107,-0.004052,-0.003965,0.020503,0.0092,-0.008893,-0.011653,0.029615,-0.035749,-0.045211,0.021905,0.017086,0.034872,-0.02576,0.053623,0.020941,0.00242,-0.019714,-0.011303,-0.020152,0.01621,0.039779,-0.062735,-0.076053,0.026286,-0.075352,0.039429,-0.02611,-0.022606,0.019977,-0.02024,0.062034,0.021642,0.011084,0.001298,-0.0736,-0.018838,0.030141,-0.005345,0.032594,0.009989,-0.02944,0.016297,0.028914,0.040655,-0.004315,-0.000986,0.011741,-0.029615,0.01047,-0.021992,0.001741,-0.005235,0.017787,0.005235,0.065189,-0.019013,0.009901,-0.008105,0.020152,-0.033646,-0.019101,-0.014545,-0.032244,0.009813,-0.028739,-0.005827,0.003308,-0.083063,0.008937,0.031192,-0.054674,0.015771,-0.00495,0.027337,-0.002147,-0.007404,0.028213,-0.010514,-0.007185,0.015333,0.021379,-0.010251,-0.009244,-0.005827,0.013931,-0.015684,0.040655,-0.011084,-0.018838,0.002256,-0.007097,0.016472,0.010777,0.01691,-0.038552,-0.037501,0.005345,0.019189,-0.022168,-0.016297,0.015596,0.021204,0.014107,0.024183,0.037326,-0.016823,-0.004972,-0.007623,-0.010339,-0.016034,-0.067291,0.012004,-0.019013,0.00368,0.033821,-0.013581,-0.039078,-0.019101,-0.044686,-0.008324,0.016034,0.00793,-0.002256,0.002508,-0.026811,0.014019,-0.011128,0.006221,-0.025585,-0.006966,-0.01989,0.036975,0.015947,-0.048366,0.020941,0.016998,0.007973,0.009726,0.043109,0.004534,0.004512,-0.005038,0.029615,-0.046613,-0.006265,0.016122,-0.016034,0.017962,-0.009813,0.001424,-0.002541,0.008236,0.045211,0.046964,0.031543,-0.05923,0.040655,-0.009069,0.015421,0.020853,-0.024533,0.021992,-0.035398,0.005958,0.009375,0.000389,0.000105,-0.028564,0.070095,-0.045562,-0.031368,0.026461,0.034347,0.042583,0.01507,0.056427,0.00644,-0.011916,0.017173,-0.015596,-0.00771,-0.016034,0.02611,-0.020503,-0.023657,0.00863,-0.004162,0.015947,-0.048015,-0.000925,0.069394,-0.028038,-0.028213,-0.023657,0.028038,-0.042758,0.001024,-0.0184,-0.052922,0.029966,-0.039954,-0.027162,-0.000054,0.011084,0.045562,0.00885,-0.024709,-0.008587,0.004096,-0.012091,0.000096,0.04083,-0.070796,-0.044861,-0.001818,0.093928,0.002891,0.022956,-0.007798,0.021554,-0.013406,0.029966,0.000572,-0.025585,0.00644,-0.009288,-0.062735,-0.049067,0.02024,-0.035398,0.01621,0.030316,-0.032069,-0.009594,0.057829,0.025234,0.003527,0.030316,0.000493,-0.038377,0.006396,0.031192,-0.076053,-0.027337,0.02541,-0.001396,0.037326,-0.000104,-0.030141,-0.065189,-0.004381,-0.000539,-0.005016,-0.005432,0.075703,0.034171,-0.010251,-0.012442,-0.017787,-0.011303,0.01288,0.053272,-0.02059,-0.046613,0.039078,0.051169,0.009288,0.064488,0.031017,0.050819,-0.01472,-0.019451,-0.05923,-0.038027,-0.025059,0.026811,-0.039429,-0.006747,0.038552,-0.04451,0.005148,-0.069394,-0.019276,0.000084,0.028389,-0.087619,-0.053623,0.017261,-0.053272,-0.035749,0.061684,-0.058529,0.021029,-0.017436,0.022781,0.039604,0.045562,0.061333,0.007404,0.041707,0.035573,0.028213,-0.055025,0.01047,0.03277,-0.02243,-0.024008,0.017524,0.024709,0.067642,0.016648,0.071497,0.016122,0.038728,-0.057478,-0.056777,0.041882,-0.022956,0.042933,-0.009594,-0.045211,0.030667,-0.028739,0.040305,-0.002891,0.017173,0.001829,-0.003614,0.019977,0.01472,-0.052922,0.008806,0.007229,0.006528,0.105844,-0.020941,0.004447,0.000528,-0.031368,0.01656,-0.05187,-0.042933,0.035398,0.017787,-0.05888,-0.01989,-0.002793,-0.053623,0.040655,0.003089,0.063787,-0.01472,-0.00609,0.008324,0.05187,0.025059,-0.046613,-0.034522,-0.016122,0.031543,-0.017086,0.00115,-0.014895,-0.026461,-0.009463,0.021467,-0.021642,-0.03347,0.031017,-0.022781,0.012267,-0.058179,0.008981,-0.049768,0.038202,0.052571,0.072899,0.047314,-0.027688,0.024884,0.001588,-0.010076,0.002913,-0.007535,-0.025935,-0.02611,0.012004,-0.018575,-0.060282,-0.01472,0.053973,-0.033295,0.041181,0.012442,-0.037676,-0.050819,-0.045562,-0.000287,-0.02243,0.052221,-0.008411,0.006659,0.01691,-0.003877,0.016823,-0.000794,-0.032244,0.036099,-0.002245,0.003746,0.002519,-0.007973,-0.000693,-0.005301,-0.022606,-0.021992,-0.004885,-0.01253,-0.027863,0.022956,-0.031718,0.041006,0.023131,-0.029966,0.02979,-0.055025,0.034347,0.019276,0.003943,-0.02024,-0.002322,0.028564,-0.000329,-0.028389,0.020853,0.023307,0.023657,-0.023307,0.08131,0.03715,-0.022168,0.017436,0.003001,0.085166,-0.00977,0.038552,-0.028739,-0.010514,-0.03645,0.005739,-0.009244,-0.008981,-0.016998,0.020853,0.055375,-0.011916,0.055726,-0.008149,0.032244,-0.002355,0.001884,0.001446,0.010646,-0.030842,0.02576,0.035924,0.013318,-0.001555,0.009156,-0.069394,0.004447,0.011303,-0.026461,-0.01069,0.055025,-0.026987,-0.025059,0.012442,-0.056777,0.002289,-0.024183,0.043284,0.020503,0.031017,-0.02243,0.011916,0.059931,0.004819,-0.001249,-0.006571,0.00885,0.086568,0.013406,0.008674,-0.024884,-0.028389,-0.00885,-0.045912,0.011916,0.01253,0.015947,-0.006834,-0.030842,-0.049067,0.051169,0.041356,0.025585,0.015333,-0.014545,-0.067642,-0.019101,0.01437,0.003351,0.001906,-0.043634,0.008411,-0.040305,-0.022606,0.065539,0.069044,0.012179,-0.017349,-0.006177,0.027512,-0.008674,0.033295,-0.0092,0.038377,0.007185,0.025585,-0.031543,0.009025,0.01875,-0.045562,0.018225,-0.020766,0.014895,-0.021379,-0.019364,-0.019276,-0.038377,0.052922,-0.031017,0.021905,-0.04013,-0.013406,-0.00609,0.016297,-0.039253,0.070446,0.003439,0.02979,0.062735,0.050469,-0.047665,-0.002716,-0.035048,-0.008149,-0.03347,-0.098133,-0.017349,-0.027512,-0.043109,0.02979,-0.011916,0.027337,-0.0184,0.050469,-0.006922,-0.00644,-0.035924,-0.046613,-0.01621,-0.008324,-0.034522,-0.001177,-0.003286,0.007798,0.048015,-0.013844,-0.007053,0.042758,0.006659,-0.037326,-0.002344,-0.013143,0.012617,-0.045562,-0.02243,-0.041181,0.028564,-0.007886,-0.008411,-0.022343,-0.014282,0.00506,-0.027337,-0.011741,-0.001457,-0.013931,0.017086,0.018137,0.012091,0.004228,-0.002015,0.030667,-0.013318,-0.012617,0.000474,0.002508,-0.020152,0.000155,0.01323,0.008499,-0.018926,-0.005586,0.026987,0.046613,0.035398,0.010952,-0.018137,-0.005827,-0.045562,-0.036975,-0.002782,0.048366,-0.100937,-0.031893,0.000069,-0.006747,-0.037326,0.045562,-0.016823,0.071848,0.039253,-0.019977,-0.025585,-0.059931,-0.016472,-0.001884,0.023832,0.018137,-0.00066,0.016823,0.008543,0.029966,-0.032419,-0.010996,0.001807,-0.006177,0.031893,-0.032069,0.007579,-0.003461,0.072899,0.023657,-0.013581,-0.0368,0.03715,-0.03645,-0.016823,-0.030491,-0.011566,-0.030667,-0.063787,-0.009025,0.04083,0.018838,0.021467,-0.00449,0.008499,0.014107,-0.025585,-0.039078,0.023657,0.010733,0.075002,0.035924,-0.019101,0.002596,0.007886,-0.02611,0.054674,-0.009288,-0.039078,-0.00587,0.013143,-0.020152,0.014019,-0.001829,-0.003439,0.015947,-0.016735,0.015333,0.057829,0.01323,-0.037851,-0.026461,-0.008762,-0.005016,0.050118,-0.000133,-0.008105,0.016297,0.012267,0.017611,-0.02611,0.012179,-0.011741,0.05187,-0.01656,0.003132,-0.028213,0.009244,-0.021467,0.019802,0.023131,-0.005476,-0.000975,0.004096,-0.056777,-0.011741,0.036625,-0.043809,-0.04013,0.056777,0.017699,-0.066941,0.013318,0.110049,-0.04083,0.05923,-0.021554,-0.015246,-0.031893,0.041006,0.006046,0.006265,-0.040655,0.006834,-0.01472,0.051169,0.039429,0.030842,-0.001577,-0.009507,-0.024008,-0.028914,-0.006571,0.034697,-0.008017,-0.017086,0.014808,-0.032594,0.034522,-0.03645,0.026811,0.002453,0.058529,0.019276,-0.000026,0.005542,-0.031192,0.020678,-0.015771,-0.014107,0.01012,0.022606,0.025234,0.016034,-0.016297,-0.008893,-0.014019,-0.002497,0.004271,-0.006966,0.004381,0.051169,-0.034171,-0.04048,-0.018838,-0.050819,-0.02611,-0.009463,-0.045912,0.033996,-0.003746,0.015509,0.008543,-0.028038,0.009857,-0.005827,-0.039253,-0.019451,-0.004447,-0.05152,-0.02541,0.024709,0.008806,0.023657,0.019802,-0.006966,-0.059931,-0.008543,-0.025585,0.019802,-0.038903,0.041531,0.019189,0.039954,-0.003001,-0.031893,-0.019276,-0.036099,0.049768,0.008105,0.02024,-0.003132,-0.010339,-0.09603,-0.026811,0.03645,0.01989,0.014632,0.028213,-0.022168,-0.045562,0.023657,0.002661,0.021905,0.019189,-0.026461,-0.04048,0.002464,-0.005695,0.010339,0.002092,-0.019451,-0.000172,-0.03715,0.008324,-0.024358,-0.03312,-0.003724,0.002311,0.014808,0.034171,0.039954,0.016385,0.004315,-0.011566,-0.0092,0.019977,-0.017962,0.023482,-0.063787,0.024884,0.009419,-0.01805,-0.035223,0.033646,-0.010996,0.051169,0.008937,0.011128,0.00037,0.06659,0.02576,0.006747,-0.00032,-0.004775,0.000925,-0.003417,-0.005082,-0.053272,0.025234,0.009025,0.008149,0.013055,0.031718,0.020415,-0.027337,0.039954,0.011128,0.042408,0.020328,-0.027337,-0.012617,0.014282,0.008368,0.043634,0.043109,-0.042758,0.039078,-0.002366,0.015158,-0.009331,0.017261,-0.053973,-0.006046,-0.02909,-0.005345,0.014983,-0.022956,0.02541,0.063787,0.010733,-0.076754,-0.014194,-0.001982,0.018225,-0.000712,0.015246,-0.012968,0.052221,-0.03312,0.012091,0.004009,0.026286,-0.000244,0.000671,-0.046613,0.024709,0.029265,0.015333,-0.035749,0.009069,-0.021379,-0.014545,0.007272,0.052922,0.002913,0.039429,-0.022168,-0.016648,-0.050469,-0.02059,-0.034697,-0.015947,-0.000394,-0.058179,-0.000843][-0.053549,-0.037418,-0.010519,-0.037584,0.017877,-0.003492,-0.03509,0.023116,-0.007733,0.006112,-0.025278,-0.029435,0.032096,-0.009063,-0.040411,0.002723,-0.075501,0.04856,-0.075501,0.034092,-0.137032,-0.03326,-0.010976,-0.084814,-0.036254,-0.044901,-0.049558,-0.00316,-0.063527,-0.020455,0.067518,0.017794,-0.041908,-0.021619,0.005737,-0.015383,-0.050888,0.026276,-0.065855,0.083151,-0.018127,-0.060534,0.062529,-0.055877,-0.013055,-0.037917,0.007151,0.01663,-0.042906,0.004636,-0.014136,-0.010976,-0.030932,0.043238,0.006486,0.065855,-0.030599,-0.006319,-0.051886,0.004074,-0.017545,-0.045567,-0.044236,0.012057,0.0153,-0.012805,0.013304,0.023947,-0.053882,-0.018958,0.019125,-0.009022,-0.008024,-0.005488,-0.003763,-0.004989,-0.041076,0.054879,-0.011974,0.011059,0.014219,-0.015383,0.021785,-0.008149,0.02744,0.030101,0.035755,0.013221,0.046564,-0.027273,-0.026276,0.014884,0.012306,0.003867,0.030101,0.020621,0.042573,0.017295,-0.008939,0.015466,-0.028604,0.012805,0.033925,-0.056875,-0.064525,0.022783,-0.068184,-0.002702,0.004573,-0.007151,0.02744,-0.018127,0.036087,0.020455,0.030599,-0.00844,-0.056542,-0.010519,0.016713,0.005446,0.030101,0.032761,-0.021619,0.016298,0.021287,0.023947,-0.025111,0.004698,-0.001777,-0.03958,0.023448,0.018376,-0.000012,-0.019457,0.011392,0.006527,0.051886,0.00159,0.034258,-0.000225,-0.012556,-0.038915,-0.030599,-0.009438,-0.00045,0.032761,-0.044236,-0.013554,0.001434,-0.060866,0.00686,0.04091,-0.042573,0.026109,0.001892,0.010602,0.011891,-0.000283,0.054214,-0.014302,-0.015383,0.013055,0.020621,0.000059,-0.004282,-0.000418,-0.017628,-0.01056,0.013886,-0.019041,-0.021785,0.026608,-0.016131,0.010726,0.010893,0.00661,-0.028604,-0.000222,0.008939,0.023448,-0.038249,-0.00607,-0.002588,0.008273,0.03326,-0.006278,0.011807,0.005072,0.005571,-0.017046,-0.024114,-0.015715,-0.04723,-0.005322,-0.011225,-0.014302,0.042906,-0.003534,-0.025278,-0.009687,-0.024945,-0.026775,0.014801,0.021619,-0.017794,0.009313,-0.018293,0.023116,-0.006486,0.00264,-0.015383,0.03326,-0.017545,0.029768,0.021619,-0.023781,0.009396,0.018543,0.003638,0.012223,0.053216,-0.022284,-0.00765,-0.022451,0.008772,-0.015133,0.010311,0.0074,-0.009853,0.000878,-0.009645,-0.020871,-0.026109,-0.019956,0.034591,0.004823,0.028105,-0.066521,0.07284,-0.028105,0.051221,0.011142,-0.051553,0.015715,-0.023781,0.011558,0.020039,0.011142,-0.006444,-0.030267,0.038083,-0.07151,-0.033759,0.038915,0.042573,0.04091,0.024945,0.069847,0.00607,-0.021619,-0.016963,-0.00131,0.009063,-0.020705,0.001538,-0.005654,-0.013969,0.023448,-0.010893,0.017877,-0.044569,-0.012556,0.067851,-0.048227,-0.02428,-0.011558,0.020788,-0.039413,-0.005945,-0.034591,-0.03775,0.03193,-0.00844,0.023448,-0.002806,0.009687,0.038416,0.008273,-0.018875,0.023615,0.014219,-0.015799,-0.008024,0.045234,-0.022284,-0.02295,-0.017877,0.067186,0.008232,0.049225,0.017212,0.022118,-0.040245,0.023116,-0.009438,-0.022451,-0.017961,-0.021287,-0.042573,-0.016464,0.007567,-0.019125,0.012389,0.006195,-0.039912,-0.000769,0.021287,0.035588,-0.053882,0.024779,0.00264,-0.01688,-0.002827,0.042573,-0.042573,-0.037251,0.007359,0.030932,0.041908,-0.045234,-0.031265,-0.03958,0.007442,0.037418,-0.005155,0.000155,0.069514,0.027273,-0.034757,-0.013969,-0.001777,0.037418,0.020039,0.050223,-0.036753,-0.06519,0.055545,0.026109,0.02112,0.089803,0.064858,0.023947,-0.00686,-0.03509,-0.070179,-0.049225,-0.013304,-0.002827,-0.032262,-0.012722,0.018127,-0.020289,0.009729,-0.093129,-0.032928,0.027273,0.008856,-0.061531,-0.018127,0.011807,-0.036586,0.001393,0.030267,-0.034092,0.043571,0.00501,-0.017545,0.044569,0.026276,0.052219,0.039912,0.050223,0.029435,0.011641,-0.044236,0.009147,0.046897,-0.017212,-0.008481,0.027107,0.044569,0.073838,0.003472,0.050888,0.009105,0.036087,-0.054547,-0.021785,0.018459,0.002536,0.024446,0.018376,-0.035422,0.066188,0.011142,0.052884,0.013637,0.01821,0.021619,-0.018543,0.039912,-0.00819,-0.040079,0.025777,-0.010893,0.022783,0.093794,-0.007026,-0.017545,0.005488,0.017961,0.015383,-0.02561,-0.033759,0.014302,0.030267,-0.016963,-0.044901,-0.000598,0.0021,0.045567,-0.000759,0.025777,-0.030766,-0.021952,0.016381,0.066521,0.024779,-0.034258,-0.027606,-0.001767,0.03326,-0.030433,-0.033094,0.002037,0.008315,0.007941,0.014219,-0.035256,-0.00553,0.014219,-0.042906,0.038748,-0.006278,0.001829,-0.066853,0.010269,-0.008814,0.08182,0.032928,-0.033427,0.031431,-0.009063,-0.031431,-0.002889,0.007234,-0.045234,0.013055,0.021619,-0.019956,-0.061199,-0.007775,0.047562,-0.001902,0.022783,0.002723,-0.003388,-0.049558,-0.029602,0.017877,-0.012888,0.038249,-0.046897,-0.003181,0.060201,-0.001736,0.023282,-0.020372,-0.050556,0.032429,0.011974,-0.018376,-0.006943,0.011392,0.04723,0.007691,-0.032928,0.017212,-0.002598,-0.02295,-0.022284,0.001382,-0.060866,0.016298,0.023781,-0.01821,0.025777,-0.029435,0.018127,0.04856,-0.010435,-0.025444,0.013221,0.032429,-0.012057,-0.048227,-0.00977,0.043904,0.03775,-0.032928,0.09712,0.037584,-0.012972,-0.009188,0.026775,0.091798,-0.00661,0.012306,-0.014635,-0.019291,-0.03193,0.029602,-0.014635,-0.030267,-0.030433,0.028271,0.061199,0.006153,0.058205,-0.043238,0.019125,0.000052,-0.010602,-0.016713,0.007525,-0.036753,0.009313,0.011308,0.014718,-0.001143,0.007899,-0.067851,-0.012389,-0.013055,-0.001809,0.005696,0.037584,0.002848,-0.034757,0.022451,-0.045899,0.012223,0.007691,0.046564,-0.005904,0.040744,0.033925,0.013969,0.032928,-0.004802,-0.010435,-0.018958,-0.012722,0.091798,0.035422,-0.00237,-0.009978,-0.026109,-0.025777,-0.038249,0.042407,0.000676,0.031265,0.014884,-0.044901,-0.01979,0.038748,0.033593,-0.003679,0.05754,-0.004282,-0.069514,-0.024114,0.028936,0.007151,-0.000227,-0.051221,0.026775,-0.029768,-0.034923,0.052219,0.067186,-0.006902,-0.025943,0.013221,0.026608,-0.021453,0.031597,-0.01214,0.030101,-0.001434,0.039247,-0.012057,0.022118,0.036586,-0.031597,0.022783,-0.017046,-0.018875,-0.048227,0.005446,-0.03958,-0.012722,0.045899,-0.022617,0.042241,-0.044236,0.011558,0.011974,-0.010269,-0.000878,0.065523,-0.03326,0.014468,0.015466,0.031098,-0.051221,0.018376,-0.03958,-0.043571,-0.038582,-0.046232,-0.02295,-0.016381,-0.041575,0.025777,0.010893,0.025111,-0.000173,0.048893,-0.022118,-0.008606,-0.04091,-0.060534,-0.040578,-0.003679,-0.034757,-0.000509,0.009271,-0.000977,0.042407,-0.003368,0.00898,0.062529,0.015383,-0.03958,-0.014718,-0.01979,0.024446,-0.044901,-0.060534,-0.022284,0.030932,-0.001024,-0.026109,0.003679,-0.016963,0.003077,-0.043238,-0.009562,-0.017212,0.004615,0.024779,-0.015882,0.001372,0.009521,0.047895,0.056875,0.026276,-0.030101,0.005072,-0.023781,-0.005031,0.005654,0.053216,-0.026276,-0.034424,0.005488,0.002869,0.014468,0.009022,0.002266,-0.021453,-0.009479,-0.082485,-0.044569,-0.034757,0.024114,-0.105102,-0.015217,0.017711,0.021619,-0.045234,0.03509,-0.001252,0.089803,0.060866,0.009271,-0.040578,-0.046897,-0.036919,-0.020455,0.011641,0.026109,0.012473,-0.016381,0.004449,0.021203,-0.044901,-0.020788,0.015715,0.011641,0.013969,-0.01979,-0.01214,-0.0153,0.076499,0.014884,-0.015217,0.00093,0.043571,-0.041409,-0.030932,-0.015549,-0.026276,-0.036087,-0.047895,0.021785,0.077164,0.01505,-0.006735,-0.016048,0.003347,0.010394,-0.016464,-0.034923,0.044901,-0.018792,0.076166,0.012389,-0.022617,-0.003534,-0.019041,-0.025777,0.041243,-0.008273,-0.027939,-0.033925,-0.000535,-0.007775,0.021952,-0.024114,0.035588,0.062529,-0.001777,-0.010893,0.017462,0.001954,-0.029435,0.009063,0.03193,0.004282,0.021785,-0.004241,-0.033094,0.027939,0.010061,-0.004947,0.002214,0.004781,-0.02877,0.030599,-0.006818,0.000026,-0.021619,-0.044236,-0.044901,0.005613,0.001362,-0.009147,-0.003659,-0.042906,-0.082485,-0.021952,0.036254,-0.036919,-0.017129,0.050223,0.004802,-0.045567,0.011974,0.060866,-0.026109,0.052551,-0.004844,0.018958,-0.015466,0.034092,0.029103,0.01056,-0.04723,0.006195,-0.020871,0.036087,0.020538,0.028438,0.001497,0.008565,-0.021952,-0.015466,-0.003908,0.029103,0.02744,-0.012473,0.006153,-0.004137,0.02295,-0.031265,0.009853,0.007442,0.032761,-0.015882,-0.00661,-0.000248,-0.013055,0.01081,-0.029269,-0.014635,0.011392,0.039746,0.03509,-0.02428,-0.026941,0.005322,-0.017046,-0.015549,-0.016464,0.01347,-0.012805,0.042906,-0.02295,-0.057208,0.003347,-0.024945,-0.003534,-0.013387,-0.038915,0.040744,0.020455,0.006652,0.014635,-0.002495,0.005779,-0.021952,-0.046232,-0.012306,0.010519,-0.033427,-0.038083,0.02877,0.020122,0.037085,-0.005654,-0.010602,-0.06386,-0.004989,0.005571,-0.004844,-0.03958,0.011059,0.019125,0.052884,0.002193,-0.022617,-0.00844,-0.023116,0.03326,0.022617,0.000056,-0.024114,-0.010435,-0.122398,-0.021287,0.040411,0.010311,0.03509,0.014551,-0.024945,-0.032928,0.031098,0.022284,0.02561,-0.00211,-0.018709,-0.005405,0.020372,-0.011807,0.006694,-0.014136,-0.005301,0.015882,-0.01505,0.017129,-0.024613,-0.005779,-0.008689,0.030766,0.049225,0.006652,0.007068,-0.011475,0.001517,-0.02877,0.00898,0.006361,-0.013803,0.02428,-0.086477,0.014967,-0.010976,-0.013221,-0.043238,0.028271,-0.004012,0.002276,0.017462,0.015133,0.021952,0.056875,0.026442,-0.005945,0.032429,0.000052,0.015466,0.007359,-0.000546,-0.078827,0.011059,0.013554,0.009645,0.021619,0.00844,0.041409,-0.001746,0.020039,0.021453,0.05754,0.011475,-0.014718,-0.005405,0.011974,-0.001788,0.06519,0.033759,-0.018543,0.018626,-0.005779,0.027273,-0.013969,0.031764,-0.028936,-0.04723,-0.012639,0.003264,0.04989,-0.040079,0.032096,0.069181,0.014219,-0.061199,0.000857,-0.005301,0.014302,-0.027772,-0.006319,0.005176,0.064192,-0.034424,0.023448,-0.029768,0.006652,-0.002006,0.003035,-0.03958,0.056875,0.015632,0.01979,-0.020039,-0.003472,0.018376,0.005259,0.025943,0.050888,0.028936,0.004552,-0.018792,-0.008939,-0.041409,-0.029934,-0.026109,-0.00291,-0.020788,-0.029269,0.011475][-0.044153,-0.085772,-0.013481,-0.040534,0.070572,-0.005836,-0.032572,-0.001685,-0.036372,0.001188,-0.019,-0.045419,0.026238,-0.011762,-0.040353,-0.010179,-0.064419,0.076362,-0.0456,0.038,-0.084324,-0.045057,-0.018367,-0.032029,-0.030762,-0.036372,-0.045781,-0.008505,-0.036734,-0.017552,0.076362,-0.001719,-0.020538,-0.020719,-0.023162,-0.017733,-0.005519,0.042705,-0.051391,0.082153,-0.0171,-0.003936,0.046686,-0.021081,-0.027143,-0.017733,-0.011264,-0.011581,-0.011129,0.025333,-0.031667,0.026781,-0.058629,0.044515,-0.016286,0.064419,-0.012938,-0.006288,-0.017643,-0.000433,-0.076,0.005474,-0.021895,-0.010902,0.00855,-0.012214,0.023524,0.018005,-0.023162,-0.038543,0.0342,-0.038905,-0.02271,-0.02461,-0.008279,-0.020629,-0.046324,0.027686,-0.006333,-0.019633,0.01891,-0.007374,0.010993,-0.044153,0.016286,0.002251,-0.011264,-0.046686,0.045781,-0.062972,-0.027867,0.058267,0.040534,0.030219,-0.028048,0.046324,0.009545,-0.003167,-0.008686,-0.000526,-0.008912,0.024067,0.037276,-0.05501,-0.041438,0.0304,-0.053562,0.052838,-0.021443,-0.025514,0.031848,-0.014114,0.028048,0.019724,0.008414,0.003257,-0.071296,-0.018276,0.021262,-0.010631,0.035286,0.031667,-0.026419,0.002262,0.009183,0.024791,-0.027324,-0.016014,0.006198,-0.036553,0.006424,-0.018548,-0.001199,0.020629,0.026781,0.015472,0.057905,0.004773,0.023524,-0.021624,0.025153,-0.048134,-0.013391,-0.024248,-0.0342,0.000905,-0.046143,0.012667,-0.001035,-0.073105,0.00751,0.041076,-0.046686,0.002692,-0.016829,0.012124,0.001696,0.005112,0.030219,-0.013119,0.001764,0.001193,0.020357,-0.00337,0.011581,-0.005496,0.020719,-0.01321,0.035648,-0.010902,-0.001391,0.008369,-0.009726,0.034562,-0.002386,0.027505,-0.040172,-0.025695,-0.033114,0.02841,-0.020629,-0.008188,0.033838,0.019362,0.002726,0.0152,0.03221,-0.012124,-0.001295,-0.032933,-0.027143,-0.022348,-0.070572,0.017281,-0.009274,-0.011264,0.015652,-0.022076,-0.04361,0.005881,-0.0266,-0.00561,0.029495,-0.009817,-0.000294,0.014838,-0.007374,0.026781,-0.012667,-0.005021,-0.031305,-0.006695,-0.0342,-0.002465,-0.001233,-0.033295,0.012395,0.025153,0.003868,0.036553,0.058267,0.002805,0.020538,-0.008007,-0.008821,-0.035467,0.003936,0.0133,-0.014838,0.010269,-0.016467,0.006741,0.002465,0.010767,0.061886,0.019905,0.034562,-0.054648,0.061886,-0.019181,0.011852,0.022348,-0.015291,0.009229,-0.05501,0.006695,0.015381,0.01701,-0.005836,-0.026419,0.057543,-0.014386,-0.039448,0.039991,0.031848,0.042524,0.024791,0.056457,0.009636,-0.011671,-0.001414,-0.024791,-0.014295,-0.005067,0.021172,0.004094,-0.006921,0.003958,-0.009274,0.004004,-0.040172,0.011445,0.056819,-0.031305,-0.018095,-0.037095,0.028953,-0.038543,0.002714,0.018548,-0.023162,0.012124,0.01891,-0.020719,0.025153,0.021533,0.033295,0.0076,-0.035467,0.011219,0.02461,-0.011038,-0.023705,0.050305,-0.058629,-0.073467,0.001934,0.090115,0.012395,0.032029,0.009455,-0.000154,-0.020357,0.053562,-0.00475,0.007871,-0.011536,0.012395,-0.043067,-0.055734,0.019362,-0.028591,0.00294,0.014205,-0.042886,-0.0304,0.033657,0.032933,0.017733,0.010857,-0.00656,-0.039267,-0.005791,0.046324,-0.029676,-0.008188,-0.027867,0.003438,0.007464,-0.028229,-0.024429,-0.070934,0.020719,-0.018729,-0.020267,-0.001431,0.04741,0.037638,-0.009274,0.007329,0.018729,0.008098,-0.018367,0.023705,-0.021443,-0.031305,0.038,0.037819,0.018095,0.079981,0.023524,0.035286,0.016829,-0.036553,-0.078172,-0.047772,-0.017281,0.018095,-0.026419,-0.029133,0.036191,-0.068038,0.020538,-0.095543,-0.019181,0.010224,0.00751,-0.094096,-0.001742,0.012848,-0.039991,-0.027324,0.030038,-0.022257,0.03221,-0.030219,-0.006333,0.043067,0.031305,0.036553,0.021262,0.017552,0.030581,0.025333,-0.058267,0.013391,0.021624,-0.019272,-0.00432,0.016648,0.052476,0.037095,0.039086,0.051753,0.029857,0.031486,-0.06261,-0.049219,0.047048,-0.049581,0.03601,0.011129,-0.068038,0.018367,-0.019995,0.029314,-0.0114,-0.003415,-0.004411,-0.023524,0.049581,0.005836,-0.020086,-0.003687,-0.004433,0.01131,0.112191,-0.009998,0.007012,-0.000322,-0.023162,0.023162,-0.047048,-0.022529,0.002839,0.027505,-0.039991,-0.00181,0.015562,-0.0342,0.055734,-0.023524,0.074553,-0.016105,-0.009998,-0.004343,0.057181,0.018819,-0.036372,-0.021895,-0.035829,0.084324,-0.02081,-0.005926,-0.013391,-0.02461,-0.007193,0.016467,-0.048134,-0.035648,0.026238,-0.012214,0.016919,-0.037638,-0.010631,-0.053924,0.034019,0.064057,0.059353,0.042705,-0.018005,0.007374,0.005926,-0.034562,-0.015924,0.011852,-0.021986,-0.031848,-0.002873,-0.022619,-0.043972,-0.006288,0.082877,-0.039267,0.029133,0.014295,-0.036372,-0.059715,-0.044876,0.007826,-0.029857,0.019905,0.002318,-0.020991,0.026781,-0.015291,0.009771,0.003551,-0.057905,0.048495,0.00527,0.025514,0.013481,0.020357,0.004117,-0.011581,-0.026057,-0.008912,-0.047048,-0.033114,-0.016014,-0.011581,-0.015924,0.042343,0.014838,-0.040534,0.023162,-0.057905,0.053562,0.041981,-0.003461,-0.023162,0.020267,0.023343,0.010405,-0.02461,0.016467,0.030219,0.015291,-0.016829,0.049219,0.042886,0.00561,0.044515,0.026238,0.0684,-0.009817,0.028229,-0.016376,-0.002409,-0.025695,0.016919,-0.015381,-0.043248,-0.026962,0.035286,0.061162,0.009319,0.053562,-0.003235,0.020176,-0.010631,0.007057,-0.013662,0.016648,-0.025514,0.059353,0.0684,0.017824,0.000814,0.003755,-0.071658,0.000848,0.005881,-0.018367,0.030038,0.029314,-0.029495,-0.021714,0.020629,-0.010676,0.033476,-0.009817,0.037095,0.035829,0.010088,-0.034743,-0.011852,0.078172,0.025333,0.027505,-0.014205,-0.010314,0.055734,0.041076,0.003936,-0.033657,-0.018819,-0.009319,-0.053924,0.04361,0.009771,-0.01131,0.009455,-0.043067,-0.024429,0.048495,0.031124,0.042343,0.032933,-0.005383,-0.049943,-0.033295,0.024248,0.024429,-0.011038,-0.010812,0.011581,-0.039086,-0.013119,0.035648,0.051391,-0.002443,0.008957,0.022076,0.012576,0.00941,0.024791,-0.033838,0.051029,0.00121,0.035648,-0.042705,-0.031305,0.03981,-0.069486,0.014205,-0.043429,0.026419,-0.034562,0.002126,0.009048,-0.041981,0.035286,-0.015652,0.033838,-0.033838,-0.002726,0.010133,0.016919,-0.035467,0.047048,-0.029857,0.049219,0.0532,0.038905,-0.042343,0.00846,-0.039086,-0.031848,-0.034019,-0.086858,-0.036372,-0.021895,-0.023343,0.035829,-0.013933,0.006695,0.010767,0.054286,0.000854,-0.027324,-0.022348,-0.050305,-0.031667,0.016829,-0.044876,0.019272,-0.003167,-0.009771,0.047048,-0.041619,-0.006198,0.031305,0.010133,-0.049943,0.013662,-0.005723,-0.000758,-0.055372,-0.017733,-0.063334,0.030943,0.003257,0.006831,-0.0133,-0.03601,-0.019091,-0.036734,-0.018367,-0.007917,0.011581,-0.001368,0.006062,0.003438,0.004637,-0.001448,0.03221,-0.005881,-0.003438,-0.014748,-0.008052,-0.02081,0.009274,0.01131,0.012757,-0.016919,-0.003099,0.00371,-0.006107,-0.005225,0.026781,-0.062972,-0.009048,-0.054648,-0.047772,-0.00466,0.000667,-0.097715,-0.015291,0.009545,0.025153,-0.045781,0.029676,-0.010269,0.080343,0.032029,-0.014024,-0.041076,-0.052838,0.006424,0.001617,-0.006243,0.007555,0.003257,0.009952,0.023524,0.032391,-0.055734,0.011852,0.007057,0.005723,0.039991,-0.003823,0.005202,0.019452,0.073105,0.033114,0.001007,-0.026057,0.031486,-0.043429,-0.033657,-0.015291,-0.012124,-0.062972,-0.071658,-0.026781,0.033295,-0.005542,0.019272,-0.002409,0.015019,0.052838,-0.049219,-0.034924,0.021805,-0.016467,0.072019,0.043067,-0.026238,-0.030038,-0.006379,-0.048134,0.027324,-0.020176,0.000329,-0.017733,0.004004,-0.027143,0.014748,-0.000843,0.002918,0.045781,-0.003483,0.004388,0.039991,0.006198,-0.032753,-0.052115,-0.00294,0.008369,0.037276,-0.010179,0.016919,0.013119,0.003121,0.020629,0.006062,0.026781,-0.006741,0.043972,-0.016105,-0.015652,-0.022167,0.019995,-0.0133,0.01131,0.032029,-0.026238,-0.013571,0.004908,-0.045419,-0.052115,0.043791,-0.011581,-0.045962,0.042886,0.009183,-0.054648,0.005316,0.105677,-0.032933,0.043067,-0.020448,0.005881,-0.049943,0.033657,0.00268,-0.009862,-0.037095,-0.016467,0.005791,0.055372,0.042705,0.028229,0.019362,-0.050305,-0.013119,-0.017462,-0.00294,0.012938,-0.0171,0.000614,-0.000843,0.000995,0.039448,-0.009229,0.048857,0.004094,0.052115,0.023524,0.015381,0.012757,-0.033476,0.009093,0.001233,0.024429,0.016376,0.016467,0.017733,0.004479,-0.004727,0.010767,-0.01321,-0.008188,-0.022619,0.002816,-0.009545,0.049943,-0.014024,-0.074915,-0.023524,-0.011762,-0.008233,-0.013119,-0.042343,0.040534,0.018548,-0.017643,-0.005338,-0.031667,0.025153,0.004298,-0.043067,-0.010948,0.012033,-0.049219,-0.0133,0.042343,0.028048,0.030219,-0.007645,-0.038905,-0.058991,0.008595,-0.027686,0.011762,-0.030762,-0.003642,-0.001934,-0.016105,-0.033476,-0.014567,-0.009636,-0.036553,0.052838,0.027686,0.043972,-0.010631,0.010088,-0.066591,-0.029676,0.013843,0.002251,0.019633,0.024972,-0.012667,-0.037457,0.002386,0.001606,0.018276,-0.000365,-0.051029,-0.044876,-0.008867,0.018276,-0.00337,-0.031124,0.012938,0.030762,-0.000208,0.00294,-0.013571,-0.042524,-0.017552,0.002624,0.023705,0.022529,0.0532,-0.019905,-0.005971,-0.012033,-0.006198,0.029495,0.009364,0.0209,-0.063696,0.025876,0.050305,0.003755,-0.032933,0.0266,-0.011852,0.018729,-0.016195,0.023886,0.011445,0.074191,0.02271,-0.007962,0.005451,-0.0266,0.031667,-0.017643,0.020448,-0.035467,0.001193,0.006469,0.002092,0.009817,0.000472,0.030038,-0.009591,0.016919,-0.013029,0.043791,0.023162,-0.02271,-0.018367,0.035648,0.004908,0.010224,0.030581,-0.040714,0.008867,-0.001561,-0.01511,-0.023524,-0.006107,-0.047772,-0.001685,-0.002024,0.004139,0.005971,-0.015019,0.030762,0.066591,-0.005225,-0.061524,-0.01701,0.023162,0.009138,-0.018005,0.015562,0.00337,0.030038,-0.030943,-0.012124,-0.027867,0.037638,-0.010993,-0.006469,-0.038,0.047772,0.008686,0.035648,-0.018005,0.014838,-0.008143,-0.003551,0.001318,0.046324,-0.013119,0.028772,-0.005745,-0.001295,-0.065867,-0.016557,-0.024972,0.000585,-0.008143,-0.049943,-0.00665][-0.04737,-0.084915,-0.012193,-0.026316,0.071581,-0.004474,-0.053335,0.016141,-0.014035,0.006711,-0.012456,-0.034211,0.032808,-0.01079,-0.039299,0.017018,-0.047019,0.069826,-0.050528,0.04351,-0.108775,-0.062107,0.001064,-0.041229,-0.034738,-0.048773,-0.036843,-0.005241,-0.041405,-0.039475,0.065616,0.008772,-0.02079,-0.017018,-0.029299,-0.016843,-0.017807,0.047019,-0.049124,0.087722,-0.009869,-0.030878,0.049124,-0.045966,-0.032282,-0.005614,-0.011316,0.003004,-0.017369,0.012106,-0.040527,-0.01022,-0.04737,0.032632,-0.004956,0.066668,-0.01386,-0.028071,-0.036492,-0.018597,-0.056493,-0.009518,-0.028246,0.025264,0.017544,-0.001919,0.02965,0.031053,-0.022983,-0.022457,0.02079,-0.010614,0.000112,-0.026843,0.008114,-0.029474,-0.027369,0.024036,-0.00239,-0.006009,0.02193,-0.024387,0.047019,-0.032282,0.030176,-0.014299,0.02193,-0.03965,0.040878,-0.039124,-0.03544,0.032632,0.034211,0.020878,-0.023159,0.049124,0.019474,-0.009606,-0.001919,0.006272,-0.023334,0.013685,0.057545,-0.05544,-0.06351,0.03351,-0.03965,0.050177,-0.016579,-0.01,0.038422,-0.009255,0.031931,0.042633,0.023685,0.001146,-0.057896,-0.018772,0.018246,0.000292,0.001831,0.020439,-0.027369,-0.006579,0.007544,0.021492,-0.033861,-0.003531,-0.001853,-0.040527,0.000773,-0.00943,0.012106,0.019562,0.039299,0.007062,0.0593,-0.021667,0.025966,-0.016141,0.003969,-0.044212,-0.019913,-0.02579,-0.021316,-0.007456,-0.037896,-0.005702,-0.006448,-0.076493,-0.008377,0.033334,-0.029124,0.006097,-0.014913,0.00807,0.010614,0.02158,0.036317,-0.005833,-0.003246,0.004079,0.026492,-0.008991,-0.000258,0.002094,0.019825,-0.010658,0.025439,-0.005592,-0.017106,0.00364,-0.009298,0.027895,-0.002467,0.016579,-0.047019,-0.019913,-0.022018,0.028422,-0.018334,-0.000866,0.014737,0.002829,0.007018,0.001963,0.027018,-0.023334,-0.006009,-0.01886,-0.029124,-0.022632,-0.066668,0.01022,-0.001579,-0.012193,0.01886,-0.006755,-0.045966,0.006974,-0.031931,-0.002171,0.028422,-0.032457,-0.012895,0.024737,-0.009518,0.024913,-0.005483,0.004386,-0.035966,0.002511,-0.0593,0.008246,0.014474,-0.041229,0.019825,0.024737,0.006535,0.023685,0.043159,-0.011492,0.022808,-0.016141,0.011097,-0.02386,0.006974,0.001316,-0.015702,0.011404,-0.008991,-0.011228,-0.004254,0.002873,0.046668,0.014825,0.030878,-0.060352,0.056493,-0.019474,0.038948,0.010483,-0.025439,0.005614,-0.027369,-0.001053,0.021404,0.024211,0.002917,-0.004934,0.064914,-0.043334,-0.031229,0.022808,0.02772,0.045264,0.02079,0.080704,0.014211,-0.022194,-0.004627,-0.017807,-0.00131,-0.013334,0.018685,-0.009035,-0.006009,0.019386,-0.019737,0.010263,-0.031931,-0.001415,0.060002,-0.036317,-0.010307,-0.047721,0.024913,-0.020439,0.005658,0.002489,-0.012807,0.007412,0.006448,-0.023509,0.010088,0.020176,0.034211,0.028948,-0.052633,0.033334,0.030703,-0.010965,-0.009255,0.036843,-0.045615,-0.058949,-0.02079,0.073686,0.041229,0.045615,-0.00364,-0.009913,-0.027545,0.056844,-0.003575,0.017457,-0.00557,-0.007149,-0.039299,-0.033334,0.022106,-0.035966,0.008991,0.019474,-0.051931,-0.032282,0.046668,0.025439,-0.006623,0.028773,0.02158,-0.048422,-0.002533,0.057194,-0.042106,-0.015088,-0.007807,0.017632,0.019211,-0.008246,-0.047721,-0.071932,-0.008377,0.009825,-0.005439,-0.001151,0.058247,0.041054,-0.040527,0.001129,0.013246,0.010307,-0.005044,0.033334,-0.013071,-0.045615,0.056844,0.010658,0.002314,0.055089,0.037896,0.031053,0.003377,-0.030352,-0.087371,-0.053686,-0.047019,0.007939,-0.017983,-0.024387,0.022983,-0.057194,0.010527,-0.081055,-0.024211,-0.005877,0.018509,-0.090529,-0.016228,0.009255,-0.062107,-0.019299,0.021404,-0.019123,0.049826,-0.023159,-0.016755,0.031404,0.021404,0.039299,0.025615,0.02079,0.022808,-0.007105,-0.051229,0.010702,0.041931,-0.002325,0.001025,0.0075,0.044913,0.048071,0.01965,0.039124,0.012632,0.027194,-0.037369,-0.024036,0.036317,-0.023159,0.017369,0.016404,-0.069476,0.012544,-0.006886,0.018509,0.004934,0.027018,0.025088,-0.005066,0.044036,0.00943,-0.040352,-0.034562,-0.005307,0.028948,0.108073,-0.013071,0.00829,-0.004912,-0.013246,0.024387,-0.049826,-0.024913,0.034211,0.034562,-0.035615,-0.007763,0.012369,-0.043685,0.071581,0.012983,0.050528,-0.021667,0.004254,-0.011404,0.06737,0.032632,-0.038071,-0.003619,-0.018948,0.070879,-0.021843,-0.018597,-0.014299,-0.01193,0.020264,0.01022,-0.03351,-0.058247,0.051931,-0.005088,0.037194,-0.041405,0.005921,-0.070879,0.028773,0.038598,0.057896,0.045264,-0.029299,0.014737,-0.006184,-0.018071,-0.011141,0.016316,-0.031229,-0.042633,-0.007105,-0.028948,-0.045264,0.001283,0.074739,-0.041931,0.037194,0.034738,-0.011579,-0.052282,-0.050879,-0.021229,-0.022808,0.004474,0.007544,-0.027545,0.016667,-0.028071,0.013948,-0.01465,-0.081757,0.040878,0.000212,-0.012895,-0.011228,0.024387,0.002061,0.008377,-0.016492,0.002182,-0.045264,-0.061405,0.005965,-0.001458,-0.021141,0.029474,0.011141,-0.030878,0.04158,-0.048422,0.030001,0.035089,-0.011097,-0.026667,0.037896,0.009386,0.004254,-0.024737,0.027194,0.025439,0.046668,-0.003421,0.046668,0.044212,0.021404,0.036492,0.029474,0.062107,-0.022281,0.035089,-0.003136,-0.015351,-0.036843,0.025439,-0.02158,-0.031053,-0.022369,0.032632,0.078599,0.013597,0.065967,-0.015176,0.002708,-0.019562,-0.018246,0.004013,0.003399,-0.04158,0.048422,0.036141,0.005373,-0.022983,-0.006009,-0.060352,-0.007939,-0.001809,-0.028773,0.019036,0.045264,-0.02386,-0.026843,-0.000218,-0.034036,-0.002029,0.00364,0.036492,0.013597,0.022632,-0.024737,-0.011404,0.077195,0.007763,0.024387,-0.018422,-0.007676,0.058949,0.02965,-0.015439,-0.017193,-0.036492,-0.028071,-0.032282,0.050879,0.007456,0.009606,0.028071,-0.059651,-0.044387,0.057194,0.025264,0.012807,0.029825,0.003004,-0.040352,-0.029474,0.023159,0.032808,-0.012632,-0.022018,0.01272,-0.03544,-0.018685,0.018772,0.044036,0.01693,0.007018,0.015614,0.018158,-0.026843,0.02193,-0.027545,0.048071,0.011755,0.038422,-0.026492,-0.012281,0.050528,-0.040352,0.012369,-0.006535,0.010658,-0.042457,0.012632,0.017895,-0.046668,0.02386,-0.005833,0.024913,-0.033334,0.003706,0.020702,0.006755,-0.004254,0.052633,-0.03158,0.041755,0.028246,0.067721,-0.02158,-0.010921,-0.045615,-0.040527,-0.041405,-0.046317,-0.044036,-0.013246,-0.019737,0.044913,-0.015527,0.001447,0.000263,0.067721,0.002588,-0.015702,-0.022632,-0.031755,-0.036492,-0.000556,-0.057896,0.019036,0.007588,-0.00204,0.038598,-0.006579,-0.002204,0.046668,0.010044,-0.052633,0.011228,-0.01272,-0.001447,-0.06351,-0.028071,-0.034387,0.039299,0.017457,-0.000866,-0.016843,-0.032808,-0.005088,-0.057896,-0.019123,0.003421,0.018071,0.015614,0.001634,-0.004605,0.041931,0.008684,0.02965,0.005833,-0.014913,-0.030878,-0.012983,-0.011316,-0.003882,0.013685,0.010921,-0.013246,-0.01193,-0.000441,0.022018,-0.011053,0.013158,-0.009518,-0.011097,-0.046668,-0.042984,-0.009693,0.006491,-0.082458,-0.017895,0.005176,-0.00097,-0.040177,0.051931,0.012895,0.068072,0.051931,0.011404,-0.020527,-0.041229,0.01193,0.016053,-0.016579,-0.00065,0.030703,0.032282,0.017369,0.044913,-0.045615,0.016579,-0.000817,-0.001107,0.022457,-0.043159,-0.004869,0.025264,0.071581,0.012456,-0.037545,-0.02965,0.040703,-0.037194,-0.045966,-0.009035,-0.042106,-0.051229,-0.078599,-0.004781,0.048773,-0.005746,0.031404,-0.014123,0.012632,0.037896,-0.049124,-0.015527,0.021404,-0.013071,0.065616,0.01579,-0.019386,-0.02386,-0.009649,-0.047721,0.014737,-0.010702,-0.026141,-0.02772,0.00772,-0.017018,0.014299,0.004254,0.015,0.044913,-0.009781,0.019737,0.04351,0.004364,-0.02965,-0.060352,0.023334,-0.017895,0.04158,-0.008465,0.002895,0.001075,0.010263,0.005044,0.02193,0.025264,-0.009869,0.033861,-0.017632,-0.020878,-0.014299,0.027018,-0.040527,0.004649,-0.00386,-0.03158,0.001206,-0.009825,-0.042808,-0.040352,0.028773,-0.007018,-0.026316,0.066668,0.011842,-0.077546,0.000165,0.113687,-0.023685,0.044738,-0.010702,0.01193,-0.043685,0.027018,0.00227,0.022808,-0.028246,-0.002281,-0.017632,0.046317,0.051931,0.033159,-0.000079,-0.040177,-0.019825,-0.028422,-0.006228,0.01272,-0.024211,-0.018597,-0.004254,-0.009825,0.019299,-0.01465,0.053686,0.026316,0.031755,0.021404,0.015527,0.01886,-0.019913,0.004167,-0.012807,0.022018,0.019123,0.010877,0.024387,-0.020176,0.00443,0.006623,-0.018948,-0.024211,-0.036141,0.011097,-0.019036,0.054387,-0.001996,-0.065967,-0.03351,-0.023509,-0.000267,-0.034738,-0.045264,0.032106,0.021843,-0.005154,-0.021141,-0.018422,0.025088,0.004342,-0.052633,-0.012018,0.01272,-0.049124,-0.036492,0.034913,0.011404,0.040177,-0.015878,-0.038598,-0.077195,-0.009298,-0.007325,0.016492,-0.050177,0.017544,0.028948,-0.003377,-0.031404,-0.011316,0.015,-0.032632,0.065265,0.007105,0.037194,-0.004693,0.010439,-0.074388,-0.018158,0.01693,0.0004,0.018158,0.017895,-0.006623,-0.03544,0.02579,-0.010088,0.002676,-0.018597,-0.043334,-0.027895,0.014737,0.031404,-0.028773,-0.007062,-0.00886,0.022632,-0.013334,-0.002796,-0.021755,-0.015702,-0.004803,0.002204,0.031229,0.013772,0.007983,-0.000724,-0.018772,-0.010834,0.011316,0.030527,0.009518,0.020264,-0.100354,0.028071,0.050177,-0.00307,-0.045615,0.030703,-0.002829,0.020351,0.009693,0.002248,0.006667,0.068774,0.032808,-0.007588,0.007105,0.011316,0.01193,-0.01386,0.010176,-0.044036,0.00829,0.023159,0.011097,0.005548,0.004233,0.047019,0.025615,0.009913,-0.003092,0.062107,0.034738,-0.016316,0.012281,0.019123,0.011667,0.035089,0.024036,-0.028071,0.013071,0.015878,-0.017369,-0.04737,0.016755,-0.03351,0.00239,-0.012193,0.003904,0.014474,-0.036141,0.026316,0.038247,0.006974,-0.070528,-0.025615,0.010088,0.00636,-0.003728,0.006009,-0.020527,0.025264,-0.043861,-0.007588,-0.02965,0.015878,-0.003728,-0.003531,-0.060352,0.045264,0.017018,0.032106,0.001299,0.02579,-0.009123,0.012544,0.01057,0.054037,0.002741,0.027194,-0.016843,0.001941,-0.0793,-0.033861,-0.023334,0.019036,-0.004693,-0.040352,-0.013948][0.043393,-0.042731,-0.012919,-0.054325,0.063268,-0.021365,0.006377,0.023684,-0.067575,-0.007619,0.001278,-0.048362,0.049687,-0.009648,-0.048362,0.030144,-0.023022,0.006418,-0.043725,0.042731,-0.096724,-0.009648,-0.024347,-0.052337,-0.026003,-0.043393,-0.036106,0.020455,-0.045381,-0.031634,0.041737,0.069562,-0.033953,-0.009565,-0.009399,-0.013416,-0.025837,-0.004306,-0.03975,0.088112,-0.029481,-0.018136,0.025837,-0.03859,0.000292,-0.022028,-0.053993,0.008571,-0.056643,0.037431,-0.044056,-0.00147,-0.033622,0.016314,0.002898,0.012173,0.000096,-0.018136,-0.016811,-0.012587,-0.073868,-0.029315,-0.026169,0.039418,-0.044718,-0.030309,0.014492,-0.039418,-0.082149,0.000406,0.049687,-0.007909,0.000942,-0.001201,0.007163,-0.02915,-0.034284,0.049356,0.019626,-0.053993,0.02799,-0.004203,-0.036106,0.008074,0.029978,0.011676,-0.009979,-0.044056,0.009068,0.016066,-0.035278,0.01325,0.001698,0.028653,0.004596,0.01383,0.040081,0.025837,-0.013167,-0.000678,0.0159,0.034781,0.0265,-0.036106,-0.065256,0.026997,-0.104674,0.036106,-0.024347,-0.009482,0.021862,-0.027659,0.02385,0.011511,0.001216,0.007205,-0.034119,-0.032462,0.040247,-0.028653,0.04505,-0.012505,-0.044387,0.01797,0.027328,0.015817,-0.006873,0.012008,0.005548,0.000525,0.011759,-0.007122,-0.022856,-0.018964,-0.009606,0.001511,0.046043,0.003043,0.008737,0.000347,-0.017225,-0.01532,0.006749,-0.020289,-0.010517,0.034615,-0.019875,-0.007163,0.024844,-0.085462,0.00588,0.039915,-0.017142,0.033456,0.018798,0.022525,-0.011014,0.032131,0.033622,0.027328,-0.017142,0.010144,0.025175,-0.017805,-0.004907,-0.011842,0.004472,-0.004099,0.014492,0.022359,-0.0047,0.021034,0.005548,-0.042234,0.000828,-0.012256,-0.040909,0.017391,-0.006169,0.009275,-0.02385,-0.050018,0.000624,0.007702,0.011014,0.024678,0.015651,-0.000245,-0.013912,-0.021862,-0.004617,0.006377,-0.081156,0.001615,-0.040247,-0.01031,0.013416,-0.006915,-0.040909,0.008364,0.01118,-0.041903,0.001698,0.005714,0.002546,-0.006873,-0.02534,0.006335,-0.005341,-0.00559,-0.036272,0.032462,-0.011097,0.050681,-0.014989,-0.052668,0.004658,-0.012256,-0.010227,-0.035775,0.022359,0.03064,-0.016645,-0.014989,0.004078,-0.0159,0.011097,0.006749,-0.018716,0.009068,-0.017805,-0.038756,-0.016728,0.0106,0.008447,0.031137,0.010517,-0.035278,0.037928,-0.001439,0.018467,0.026997,-0.042731,0.034284,-0.006211,-0.010434,-0.034119,-0.017225,-0.025672,-0.070556,0.056643,-0.044718,-0.008116,0.046375,0.030972,0.06625,-0.01267,-0.0106,0.011676,0.022525,0.006128,-0.056975,-0.014741,-0.014244,0.017639,-0.001061,-0.012422,-0.002878,-0.005238,0.012587,-0.046043,0.018798,0.039418,-0.038259,-0.022028,-0.024844,0.016066,-0.062937,-0.013001,-0.006998,-0.094737,-0.015651,-0.01031,-0.030972,-0.022194,0.017805,0.020869,-0.005072,-0.020289,-0.038093,0.037265,0.006501,-0.051675,0.054987,-0.063931,-0.0636,-0.015486,0.104674,0.000745,-0.016811,0.003727,0.020869,-0.024512,-0.016066,0.007536,-0.059956,-0.016562,-0.03064,-0.052337,0.004203,-0.033953,0.021531,0.006004,-0.007329,-0.00588,-0.018053,0.077181,0.061281,-0.027659,0.037928,-0.013416,-0.003126,-0.009813,0.035112,0.012587,-0.02534,-0.004099,0.060287,-0.004368,-0.029315,-0.009151,-0.082149,0.000252,0.000294,-0.046706,0.026831,0.049025,0.018798,-0.018136,-0.026831,0.004637,-0.0689,-0.008737,0.032628,-0.038922,-0.07155,0.033787,0.046706,0.031634,0.020289,0.059956,0.037597,0.006873,-0.026831,-0.044718,-0.031469,-0.027494,0.023187,-0.058631,-0.012753,0.018301,-0.063931,0.011428,-0.084137,-0.013167,-0.017556,0.020537,-0.070887,-0.064593,0.021862,-0.048031,-0.016231,0.045381,-0.075856,0.041406,0.012008,-0.007122,0.020123,0.0159,0.03329,0.028984,0.018053,0.015486,0.043062,-0.043725,-0.031634,0.058962,-0.033787,-0.00412,0.006294,-0.023022,0.049687,0.00588,0.049687,0.001387,0.026003,-0.049687,0.012587,-0.034947,-0.005217,0.051675,-0.01267,-0.003023,0.028156,0.014989,0.016894,0.002433,0.002619,-0.020951,0.017887,-0.026665,0.029978,-0.038093,0.003954,-0.003582,-0.002795,0.100037,-0.004555,-0.001304,-0.028819,-0.044056,0.042068,-0.006832,-0.067243,0.002712,0.018633,-0.036934,-0.044387,-0.005921,-0.000926,0.037597,-0.013001,0.036603,-0.02915,0.016148,-0.024015,0.018053,0.008944,-0.036934,-0.019212,0.002836,-0.043062,0.032462,-0.007205,-0.000823,-0.014244,0.010683,0.023519,-0.030806,-0.015734,0.019709,-0.009523,0.017722,-0.019875,0.002412,0.027328,0.004637,0.019047,0.053993,0.066912,-0.03064,0.0583,-0.008488,-0.033125,0.00795,-0.032628,-0.047368,-0.017391,-0.022525,-0.033787,-0.05565,0.042068,-0.016811,0.01267,0.036437,0.021117,-0.029315,-0.028819,-0.006004,0.015072,-0.025672,0.038259,-0.004161,0.0318,0.002484,-0.013001,0.019295,-0.022856,0.008612,-0.007287,0.006004,0.00766,0.006708,-0.043062,0.015072,-0.018384,-0.00795,0.008198,-0.021365,-0.022194,-0.01267,0.025672,-0.030144,0.010393,-0.009937,-0.031965,0.031303,-0.017556,0.041406,0.028984,0.019212,-0.038259,0.04505,0.047368,-0.003623,-0.056643,-0.001884,0.02799,0.010227,-0.046043,-0.006708,0.0742,0.017059,0.009192,0.002671,0.063268,0.040578,0.047037,0.013167,0.010931,-0.000029,0.041406,-0.005838,-0.015155,-0.015651,0.043393,0.040743,0.000963,0.036769,-0.045712,0.030972,-0.012339,0.005673,0.018053,-0.032131,-0.024844,0.060287,0.008198,0.075856,0.016811,0.0318,-0.0318,0.062606,0.014575,0.043725,0.026334,0.015237,-0.008819,-0.037597,-0.022856,-0.043062,0.011345,-0.02915,-0.002733,0.028156,0.058631,-0.026997,-0.011345,0.010103,-0.019544,0.046706,-0.045381,-0.003209,0.078506,-0.009399,0.048362,-0.037928,0.00176,0.013747,-0.053993,-0.022028,0.0477,0.0212,0.011676,-0.012836,-0.04505,0.034119,0.0265,0.049356,0.000241,-0.029315,-0.053,-0.04124,0.026665,0.04124,0.027825,-0.040247,-0.042068,-0.022359,-0.012008,0.01118,0.073537,0.032794,-0.031469,-0.009855,0.037597,-0.043062,0.004575,0.035278,0.043725,0.010186,-0.004368,-0.072212,0.017473,0.01797,-0.040247,0.032959,-0.0318,0.00443,-0.018798,0.007909,-0.023353,-0.040247,0.007867,-0.06625,0.0477,-0.007163,-0.026169,-0.008985,0.031469,-0.00973,-0.003499,0.016728,-0.010517,0.05035,0.015651,-0.014244,-0.004016,-0.040909,0.029315,-0.079831,-0.057637,0.009027,0.005631,-0.008157,0.009482,-0.006004,-0.027825,0.002981,0.005921,0.021697,-0.033787,-0.040247,-0.025506,-0.026169,0.005755,0.002691,-0.011842,0.017391,-0.028653,0.029481,-0.014989,-0.011345,0.024844,0.027659,-0.039584,0.019544,-0.002816,-0.024015,-0.034947,-0.031137,-0.036934,0.019295,0.007577,0.011759,-0.026665,-0.05565,-0.008198,0.018798,0.010144,-0.0318,-0.00178,-0.023353,-0.0265,0.037597,0.015237,-0.028487,0.046043,-0.016645,0.007867,-0.026997,-0.012919,-0.041903,-0.009068,-0.008944,0.002319,0.011345,-0.041406,0.000295,0.030972,-0.004741,0.012505,0.014409,0.027494,-0.024181,-0.053,-0.004969,-0.01118,-0.063931,0.017391,0.002267,0.021365,0.008364,-0.012339,-0.017639,0.072543,0.060287,-0.006045,-0.03329,-0.044718,-0.013581,-0.02385,-0.001967,0.061943,-0.004803,-0.01855,-0.012753,0.01855,-0.011097,-0.022856,-0.00443,-0.027825,-0.020869,0.013995,0.006501,0.002629,0.03975,0.033622,0.019378,-0.004037,0.003664,-0.039087,-0.015734,-0.021531,-0.002122,0.004203,0.025837,-0.049356,0.061281,0.015817,0.021862,-0.030475,0.004141,-0.007122,-0.012008,-0.002484,0.025175,0.00853,0.031303,0.033622,-0.056975,-0.017142,0.025837,-0.017391,0.033953,-0.025837,0.010848,-0.006377,-0.01913,-0.038756,0.057637,-0.034284,0.006873,0.031137,-0.025009,0.02799,0.027162,-0.006666,-0.050681,-0.000947,-0.002215,-0.056312,0.011097,0.016811,-0.016811,0.008033,0.010848,-0.005466,-0.035609,0.040578,0.007826,0.02004,-0.000404,-0.035444,-0.031303,0.01383,0.003871,-0.002733,-0.012587,0.027825,0.023684,-0.017473,-0.044387,-0.064593,0.054656,-0.028156,-0.004513,0.017556,0.045712,-0.020537,0.0371,0.030806,0.028487,0.074531,0.015155,0.007826,-0.025672,0.05035,0.029647,-0.013001,-0.014492,-0.00501,0.001843,0.086124,-0.000273,0.0371,0.012753,-0.010186,-0.047368,-0.012173,0.047368,0.085462,-0.018716,0.013001,0.012256,0.023353,0.048031,-0.026831,0.004617,-0.016397,0.041406,0.014326,-0.000921,0.008612,-0.051343,-0.045381,-0.027494,-0.035775,0.009606,-0.002257,0.037431,0.015569,0.024844,-0.020206,-0.037762,0.004927,0.0159,-0.015237,-0.037762,0.038756,-0.016314,-0.032628,-0.021365,-0.011925,-0.044387,-0.035112,-0.004348,0.094074,-0.043062,-0.051343,0.011428,-0.03594,-0.004389,0.03859,-0.040247,-0.001956,-0.02385,-0.01797,-0.017391,0.038756,-0.003913,0.045381,-0.012339,0.040743,-0.031469,0.056312,0.022525,-0.024512,-0.020372,0.018964,0.014161,0.02534,0.009689,0.007743,-0.0159,-0.046375,0.049356,0.0318,-0.000673,-0.028984,0.002267,-0.086124,-0.038425,-0.020123,-0.022359,-0.018798,0.073537,-0.001998,-0.020372,0.040578,0.000145,0.046375,-0.011842,0.009648,-0.007867,0.015403,0.010683,-0.023353,0.030309,-0.03594,-0.021697,-0.004306,0.003706,-0.016645,0.016148,0.024844,0.016562,0.032628,0.009523,0.032297,0.0424,-0.009275,0.012836,0.011594,-0.014575,0.003623,0.02799,-0.01383,-0.013167,-0.014161,-0.042731,-0.028156,0.049356,-0.035444,0.057637,-0.028819,-0.00118,-0.002981,0.046375,-0.009937,0.007536,0.046043,0.014326,-0.045381,0.038922,-0.010683,-0.033953,0.012091,-0.000355,0.015983,0.047368,-0.004223,-0.002019,-0.008944,0.0424,0.026003,0.008364,0.018219,-0.025837,-0.015734,0.031469,0.027328,0.039253,0.055318,-0.023353,-0.00559,-0.011345,0.029315,0.003437,0.068237,-0.024015,-0.012505,-0.000307,-0.044056,0.048693,0.018798,0.03064,0.022856,-0.038259,-0.0583,-0.003644,0.029647,0.018881,-0.035112,0.023684,-0.014492,0.034781,-0.024181,0.013664,0.003147,-0.011014,-0.00737,-0.0477,-0.017722,-0.003768,-0.001294,-0.017639,0.000766,-0.03064,-0.006335,0.024678,-0.025175,0.006045,0.001304,0.016728,-0.010476,0.016562,-0.015237,-0.011759,-0.018633,0.025506,-0.044056,-0.036437,-0.038093] \ No newline at end of file diff --git a/src/embedding.cj b/src/embedding.cj index 0ceee20..90f8878 100644 --- a/src/embedding.cj +++ b/src/embedding.cj @@ -1,56 +1,54 @@ -// 本示例演示访问 DeepSeek 大模型 -package XDUMsgBot_cj -import std.collection.{ArrayList, reduce} -import std.io.StringReader -import stdx.encoding.json.* -import stdx.net.http.* -import stdx.net.tls.* - - -class Embedding { - let client: Client - public Embedding(let url!: String, let key!: String, let model!: String) { - var config = TlsClientConfig() - config.verifyMode = TrustAll - client = ClientBuilder() - .tlsConfig(config) - // AI 服务响应有时候比较慢,这里设置为无限等待 - .readTimeout(Duration.Max) - .build() - } - - func send(input: String) { - let content = ''' - { "model":"${model}", - "input":"${input}", - "encoding_format": "float", - "dimensions": 1024 - } - ''' - println(content) - let request = HttpRequestBuilder() - .url(url) - .header('Authorization', 'Bearer ${key}') - .header('Content-Type', 'application/json') - .body(content) - .post() - .build() - client.send(request) - } - - func parse(text: String) { - let json = JsonValue.fromStr(text).asObject() - println(json) - let data = json.getFields()['data'].asArray() - let embedding = data[0].asObject().getFields()['embedding'].asArray() - return embedding - } - - - public func embed(input: String) { - let response = send(input) - let output = StringReader(response.body).readToEnd() |> parse - return output - } - +// 本示例演示访问 DeepSeek 大模型 +package XDUMsgBot_cj +// import std.collection.{ArrayList, reduce} +import std.io.StringReader +import stdx.encoding.json.* +import stdx.net.http.* +import stdx.net.tls.* + + +class Embedding { + let client: Client + public Embedding(let url!: String, let key!: String, let model!: String) { + var config = TlsClientConfig() + config.verifyMode = TrustAll + client = ClientBuilder() + .tlsConfig(config) + // AI 服务响应有时候比较慢,这里设置为无限等待 + .readTimeout(Duration.Max) + .build() + } + + func send(input: String) { + let content = ''' + { "model":"${model}", + "input":"${input}", + "encoding_format": "float", + "dimensions": 1024 + } + ''' + let request = HttpRequestBuilder() + .url(url) + .header('Authorization', 'Bearer ${key}') + .header('Content-Type', 'application/json') + .body(content) + .post() + .build() + client.send(request) + } + + func parse(text: String) { + let json = JsonValue.fromStr(text).asObject() + let data = json.getFields()['data'].asArray() + let embedding = data[0].asObject().getFields()['embedding'].asArray() + return embedding + } + + + public func embed(input: String) { + let response = send(input) + let output = StringReader(response.body).readToEnd() |> parse + return output + } + } \ No newline at end of file diff --git a/src/main.cj b/src/main.cj index 0649b7e..0eda94d 100644 --- a/src/main.cj +++ b/src/main.cj @@ -3,47 +3,12 @@ package XDUMsgBot_cj import std.fs.* import std.io.* import stdx.encoding.json.* +import stdx.net.http.* +// import stdx.net.tls.* -// class Config <: Serializable { -// var url:String = "" -// var key:String = "" -// var embeddingModel:String = "" -// var queryModel:String = "" -// public func serialize():DataModel{ -// return DataModelStruct() -// .add(field("url",url)) -// .add(field("key",key)) -// .add(field("embeddingModel",embeddingModel)) -// .add(field("queryModel",queryModel)) -// } -// public static func deserialize(dm: DataModel): Config { -// var dms = match (dm) { -// case data: DataModelStruct => data -// case _ => throw Exception("this data is not DataModelStruct") -// } -// var result = Config() -// result.url = String.deserialize(dms.get("url")) -// result.key = String.deserialize(dms.get("key")) -// result.embeddingModel = String.deserialize(dms.get("embeddingModel")) -// result.queryModel = String.deserialize(dms.get("queryModel")) -// return result -// } -// } +func prepare(){ - -main() { - - /* prepare and chunk data */ - // open and read config file - let configPath:Path = Path("./config.json") - if(!exists(configPath)){ - println("Error! config.json doesn't exist") - return - } - let configFile:File = File(configPath,Read) - let configBytes:Array = readToEnd(configFile) - configFile.close() - let config = JsonValue.fromStr(String.fromUtf8(configBytes)).asObject() + let config = getConfig() // open and read data file let dataPath:Path = Path("./data/data.txt") @@ -59,63 +24,156 @@ main() { let dataArray = dataString.split("\r\n") - /* embedding */ + /* embedding and store vector */ let embeddingModel = Embedding(url:config.getFields()['embeddingURL'].asString().getValue(), key:config.getFields()['key'].asString().getValue(), model:config.getFields()['embeddingModel'].asString().getValue()) - // open and write vectors - let dataEmbedPath:Path = Path("./data/data_embed.txt") - if(!exists(dataEmbedPath)){ - println("Error! data/data_embed.txt doesn't exist") - return - } - let dataEmbedFile:File = File(dataEmbedPath,Write) - dataEmbedFile.setLength(0) - var i = 0 - for(data in dataArray){ - let vector = embeddingModel.embed(data).toString() - dataEmbedFile.write(vector.toArray()) - i++ - println(i) - } - - - - - - - - - - - - // // 使用 SiliconFlow 提供的服务接口 - // let robot = LLM(url: 'https://api.siliconflow.cn/v1/chat/completions', - // // 如果示例自带的密钥失效,请自行注册,https://cloud.siliconflow.cn/account/ak - // key: 'sk-xsoegkpdvqlbsoodrnaygqycdvhplkyowivkzlszqfytpvti', - // model: 'Qwen/Qwen3-8B', - // memory: true) - - // // robot.preset('我会用林黛玉的风格回复哥哥的所有问题') - // // robot.chats('介绍李白') - // // println('\n----------\n') - - // // robot.chats('他和安徽的不解情缘') - // // println('\n----------\n') - - // // robot.reset() - // // robot.chat('你好') |> println - // // robot.chat('却是荷池跳雨,散了真珠还聚') |> println - - // while (true) { - // let input = readln() - // if (input.startsWith('风格#')) { - // let style = input.trimStart('风格#') - // robot.switchStyle(style) - // } else { - // let reply = robot.chats(input) - // println(reply) - // } + // open and store vectors + // let dataEmbedPath:Path = Path("./data/data_embed.txt") + // if(!exists(dataEmbedPath)){ + // println("Error! data/data_embed.txt doesn't exist") + // return // } + // let dataEmbedFile:File = File(dataEmbedPath,Append) + // dataEmbedFile.setLength(0) + + + + for(data in dataArray){ + let vector = embeddingModel.embed(data).toString() + + let client = ClientBuilder().build() + let content = ''' + { "embedding":${vector}, + "document":"${data}" + } + ''' + let request = HttpRequestBuilder() + .url(config.getFields()['vectorDBURL'].asString().getValue()+"/store") + .header('Content-Type', 'application/json') + .body(content) + .post() + .build() + let rsp = client.send(request) + // read response + let buf = Array(1024, repeat: 0) + let len = rsp.body.read(buf) + println(String.fromUtf8(buf.slice(0, len))) + client.close() + println("stored: ${data}") + } +} + +func getKonwledge(input:String):String{ + + + /* retrive */ + // println("-------------------retrive:-----------------------") + let config = getConfig() + + let embeddingModel = Embedding(url:config.getFields()['embeddingURL'].asString().getValue(), + key:config.getFields()['key'].asString().getValue(), + model:config.getFields()['embeddingModel'].asString().getValue()) + let vector = embeddingModel.embed(input).toString() + + let client = ClientBuilder().build() + let content = ''' + { + "query_embedding":${vector}, + "top_k":${config.getFields()['retriveTopK'].asInt().getValue()} + } + ''' + let request = HttpRequestBuilder() + .url(config.getFields()['vectorDBURL'].asString().getValue()+"/query") + .header('Content-Type', 'application/json') + .body(content) + .post() + .build() + let rsp = client.send(request) + let output = StringReader(rsp.body).readToEnd() + let json = JsonValue.fromStr(output).asObject().getFields()['documents'].asArray() + client.close() + + + + /* rerank */ + // println("-------------------rerank:-----------------------") + let rerankModel = Rerank(url:config.getFields()['rerankURL'].asString().getValue(), + key:config.getFields()['key'].asString().getValue(), + model:config.getFields()['rerankModel'].asString().getValue()) + let result = rerankModel.rerank(input,json,config.getFields()['rerankTopK'].asInt().getValue()) + + + + /* query*/ + + let baseKnowledge = StringBuilder() + + for(item in result){ + baseKnowledge.append("参考资料:") + baseKnowledge.append(item) + baseKnowledge.append("\r\n") + } + + return baseKnowledge.toString() + +} + + +main() { + + // just need to run once + // prepare() + + + + let config = getConfig() + let robot = Query(url: config.getFields()['queryURL'].asString().getValue(), + key: config.getFields()['key'].asString().getValue(), + model: config.getFields()['queryModel'].asString().getValue(), + memory: config.getFields()['memory'].asBool().getValue()) + + let input = readln() + let baseKnowledge = getKonwledge(input) + robot.preset(input,baseKnowledge) + let reply = robot.chats(input) + println(reply) + println("\n\n------------------回答结束,如果想聊聊新话题,可以输入“新对话#<新话题>”开始新的对话------------------\n\n") + + while (true) { + let input = readln() + if (input.startsWith('新对话#')) { + let prompt = input.trimStart('新对话#') + let baseKnowledge = getKonwledge(prompt) + robot.preset(prompt,baseKnowledge) + println("--------新对话: 关于问题:${prompt}-------------") + let reply = robot.chats(input) + println(reply) + println("\n\n------------------回答结束,如果想聊聊新话题,可以输入“新对话#<新话题>”开始新的对话------------------\n\n") + + } else { + let reply = robot.chats(input) + println(reply) + println("\n\n------------------回答结束,如果想聊聊新话题,可以输入“新对话#<新话题>”开始新的对话------------------\n\n") + } + } + + + + + + + + + + + + + + + + + + } \ No newline at end of file diff --git a/src/llm.cj b/src/query.cj similarity index 81% rename from src/llm.cj rename to src/query.cj index a45c14e..4e5899c 100644 --- a/src/llm.cj +++ b/src/query.cj @@ -1,128 +1,132 @@ -// 本示例演示访问 DeepSeek 大模型 -package XDUMsgBot_cj -import std.collection.{ArrayList, reduce} -import std.io.StringReader -import stdx.encoding.json.* -import stdx.net.http.* -import stdx.net.tls.* - -// AI 对话中的三类角色 -enum Role <: ToString { - I | AI | System - public func toString() { - match (this) { - case I => 'user' - case AI => 'assistant' - case System => 'system' - } - } -} - -// 用 ArrayList 记录历史对话,扩展两个工具函数 -extend ArrayList { - func add(role: Role, content: String) { - '{"role":"${role}","content":${JsonString(content)}}' |> add - } - - func literal() { - (this |> reduce { a, b => - a + ',' + b - }) ?? '' // ?? 相当于简化版的 getOrDefault - } -} - -class LLM { - let client: Client - let history = ArrayList() - public LLM(let url!: String, let key!: String, let model!: String, - var memory!: Bool = false) { - var config = TlsClientConfig() - config.verifyMode = TrustAll - client = ClientBuilder() - .tlsConfig(config) - // AI 服务响应有时候比较慢,这里设置为无限等待 - .readTimeout(Duration.Max) - .build() - } - - func send(input: String, stream!: Bool = false) { - if (!memory) { - history.clear() - } - history.add(I, input) - let content = ''' - { "model":"${model}", - "messages":[${history.literal()}], - "stream":${stream}, - "enable_thinking": false}''' - - let request = HttpRequestBuilder() - .url(url) - .header('Authorization', 'Bearer ${key}') - .header('Content-Type', 'application/json') - .header('Accept', if (stream) { - 'text/event-stream' - } else { - 'application/json' - }) - .body(content) - .post() - .build() - client.send(request) - } - - func parse(text: String, stream!: Bool = false) { - let json = JsonValue.fromStr(text).asObject() - let choices = json.getFields()['choices'].asArray() - // 流式和非流式情况下,这个字段名称不同 - let key = if (stream) { 'delta' } else { 'message' } - let message = choices[0].asObject().getFields()[key].asObject() - let content = message.getFields()['content'].asString().getValue() - return content - } - - // 流式对话 - public func chats(input: String, task!: (String) -> Unit = {o => print(o)}) { - let response = send(input, stream: true) - let output = StringBuilder() - let buffer = Array(1024 * 8, repeat: 0) - var length = response.body.read(buffer) - while (length != 0) { - let text = String.fromUtf8(buffer[..length]) - const INDEX = 6 - for (line in text.split('\n', removeEmpty: true)) { - if (line.size > INDEX && line[INDEX] == b'{') { - let json = line[INDEX..line.size] - let slice = parse(json, stream: true) - output.append(slice) - task(slice) - } - } - length = response.body.read(buffer) - } - history.add(AI, output.toString()) - } - - // 非流式 - public func chat(input: String) { - let response = send(input) - let output = StringReader(response.body).readToEnd() |> parse - history.add(AI, output) - return output - } - - // 角色预设或加载历史对话 - public func preset(content: String, role!: Role = System) { - history.add(role, content) - memory = true - } - - public func reset() { - history.clear() - } - - public func switchStyle(styleName:String){ - reset() - preset("用${styleName}的风格回复问题") - } +package XDUMsgBot_cj +import std.collection.{ArrayList, reduce} +import std.io.StringReader +import stdx.encoding.json.* +import stdx.net.http.* +import stdx.net.tls.* + +// AI 对话中的三类角色 +enum Role <: ToString { + I | AI | System + public func toString() { + match (this) { + case I => 'user' + case AI => 'assistant' + case System => 'system' + } + } +} + +// 用 ArrayList 记录历史对话,扩展两个工具函数 +extend ArrayList { + func add(role: Role, content: String) { + '{"role":"${role}","content":${JsonString(content)}}' |> add + } + + func literal() { + (this |> reduce { a, b => + a + ',' + b + }) ?? '' // ?? 相当于简化版的 getOrDefault + } +} + +class Query { + let client: Client + let history = ArrayList() + public Query(let url!: String, let key!: String, let model!: String, + var memory!: Bool = false) { + var config = TlsClientConfig() + config.verifyMode = TrustAll + client = ClientBuilder() + .tlsConfig(config) + // AI 服务响应有时候比较慢,这里设置为无限等待 + .readTimeout(Duration.Max) + .build() + } + + func send(input: String, stream!: Bool = false) { + if (!memory) { + history.clear() + } + history.add(I, input) + let content = ''' + { "model":"${model}", + "messages":[${history.literal()}], + "stream":${stream}, + "enable_thinking": false}''' + + let request = HttpRequestBuilder() + .url(url) + .header('Authorization', 'Bearer ${key}') + .header('Content-Type', 'application/json') + .header('Accept', if (stream) { + 'text/event-stream' + } else { + 'application/json' + }) + .body(content) + .post() + .build() + client.send(request) + } + + func parse(text: String, stream!: Bool = false) { + let json = JsonValue.fromStr(text).asObject() + let choices = json.getFields()['choices'].asArray() + // 流式和非流式情况下,这个字段名称不同 + let key = if (stream) { 'delta' } else { 'message' } + let message = choices[0].asObject().getFields()[key].asObject() + let content = message.getFields()['content'].asString().getValue() + return content + } + + // 流式对话 + public func chats(input: String, task!: (String) -> Unit = {o => print(o)}) { + let response = send(input, stream: true) + let output = StringBuilder() + let buffer = Array(1024 * 8, repeat: 0) + var length = response.body.read(buffer) + while (length != 0) { + let text = String.fromUtf8(buffer[..length]) + const INDEX = 6 + for (line in text.split('\n', removeEmpty: true)) { + if (line.size > INDEX && line[INDEX] == b'{') { + let json = line[INDEX..line.size] + let slice = parse(json, stream: true) + output.append(slice) + task(slice) + } + } + length = response.body.read(buffer) + } + history.add(AI, output.toString()) + } + + // 非流式 + public func chat(input: String) { + let response = send(input) + let output = StringReader(response.body).readToEnd() |> parse + history.add(AI, output) + return output + } + + // 角色预设或加载历史对话 + public func preset(query: String,baseKnowledge:String, role!: Role = System) { + history.clear() + history.add(role, """ + 你是一位专业的知识助手,名字叫XDUMsgBot,你可以根据相关片段中的信息回答用户关于西安电子科技大学的问题。 + 请根据用户的问题和下列片段生成准确的回应。 + + 用户问题:${query} + + 相关片段: + ${baseKnowledge} + + 请基于上述内容作答,如果没有明确的信息可供参考,请回答不知道,不要编造信息。""") + memory = true + } + + public func reset() { + history.clear() + } } \ No newline at end of file diff --git a/src/rerank.cj b/src/rerank.cj new file mode 100644 index 0000000..e8d0886 --- /dev/null +++ b/src/rerank.cj @@ -0,0 +1,56 @@ +package XDUMsgBot_cj +import std.collection.ArrayList +import std.io.StringReader +import stdx.encoding.json.* +import stdx.net.http.* +import stdx.net.tls.* + + +class Rerank { + let client: Client + public Rerank(let url!: String, let key!: String, let model!: String) { + var config = TlsClientConfig() + config.verifyMode = TrustAll + client = ClientBuilder() + .tlsConfig(config) + // AI 服务响应有时候比较慢,这里设置为无限等待 + .readTimeout(Duration.Max) + .build() + } + + func send(input: String,documents:JsonArray,topk:Int) { + let content = ''' + { "model":"${model}", + "query":"${input}", + "documents": ${documents}, + "instruction": "Please rerank the documents based on the query.", + "top_n": ${topk}, + "return_documents": true + } + ''' + let request = HttpRequestBuilder() + .url(url) + .header('Authorization', 'Bearer ${key}') + .header('Content-Type', 'application/json') + .body(content) + .post() + .build() + client.send(request) + } + + + public func rerank(input: String,documents:JsonArray,topk:Int) { + + let response = send(input,documents,topk) + let output = StringReader(response.body).readToEnd() + let resultArray = JsonValue.fromStr(output).asObject().getFields()["results"].asArray().getItems() + let list = ArrayList() + for(result in resultArray){ + let jsonObject = result.asObject() + let text = jsonObject.getFields()["document"].asObject().getFields()["text"].asString() + list.add(text.toString()) + } + return list + } + +} \ No newline at end of file diff --git a/src/utils.cj b/src/utils.cj new file mode 100644 index 0000000..6e1c26a --- /dev/null +++ b/src/utils.cj @@ -0,0 +1,18 @@ +package XDUMsgBot_cj + +import std.fs.* +import std.io.* +import stdx.encoding.json.* + +func getConfig():JsonObject { + // open and read config file + let configPath:Path = Path("./config.json") + if(!exists(configPath)){ + println("Error! config.json doesn't exist") + } + let configFile:File = File(configPath,Read) + let configBytes:Array = readToEnd(configFile) + configFile.close() + let config = JsonValue.fromStr(String.fromUtf8(configBytes)).asObject() + return config +} \ No newline at end of file